단일 터미널 명령을 사용하여 텍스트 파일에 단어 추가 (편집기 없음)


22

저는 Linux를 처음 사용합니다. .conf텍스트 편집기를 사용하지 않고 열린 터미널에서만 파일 을 편집해야합니다 . 즉, 열린 터미널에서 구성 파일에 단어와 문장을 추가 할 수 있습니까?

예 : command /home/.../file.conf -add 'abcd'23 행 등. 그리고 마지막으로 저장하십시오.

해당 구성 파일에서 특정 단어를 검색하고 명령 만 사용하여 해당 구성 파일의 다음 줄에 새 텍스트를 추가 할 수 있습니까?


1
sed도움이 될 것 같습니다 .
nitishch

1
하나의 질문을하십시오.
Avinash Raj

답변:


39

나는 일반적으로 스크립트를 프로그래밍 할 때 프로그래밍 방식으로 요구하는 것과 동일하게 수행 할 때이 방법을 사용합니다.

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

짜잔! 맞아요. 중요한 것은 >>기존 파일에 줄 바꿈을 추가하는 동시에 >모든 것을 덮어 쓰는 것을 의미합니다.


신속한 답변 감사합니다. 그러나 .conf 파일의 23 번째 줄에 3000 단어 이상을 순차적으로 추가해야합니다. 더 쉬운 방법이 있습니까?
user259060

20

열린 터미널에서 구성 파일에 단어와 문장을 추가하는 것은 sed로 쉽게 수행 할 수 있습니다.

sed -i '23iabcd' file.conf

23 행에서 텍스트 abcd를 파일에 삽입file.conf

-i파일을 직접 수정합니다 file.conf.

사용하려면 awk다음을 수행하십시오.

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

다음은 SearchPattern 다음에 한 줄을 추가합니다.

sed -i '/SearchPattern/aNew Text' SomeFile.txt

SearchPattern이 포함 된 각 줄 아래에 한 줄씩 새 텍스트를 삽입합니다.

두 줄을 추가하려면 a를 사용하고 \새 텍스트를 입력하는 동안 줄 바꿈을 입력하면됩니다.

 sed -i '/pattern/a \
line1 \
line2' inputfile

5

printf명령을 사용할 수도 있습니다 .

파일에 줄을 추가하려면

$ printf "\nThis is a new line to your document" >> file.txt

파일을 덮어 쓰려면

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

노트:

  • 정규식 A는 일반 식 (정규식도라고도 함), 그 검색 조건을 정의한다. 정규 표현식은 매우 사용자 정의 가능한 검색을 허용하며 awk가 이해하는 구문 은 매뉴얼에 있습니다 . 가장 간단한 경우-문자를 기준으로 문자열을 "있는 그대로"검색하십시오. 특수 문자 앞에 백 슬래시를 넣으십시오 (특수 문자 목록은 매뉴얼 참조).

작동 방식 :

  • inputfile, 입력 라인을 읽기 위해 취소 outputfile및 출력 라인을 쓰기 위해 열
  • 각 줄에 대해 블록을 중괄호로 실행하십시오.
    • 행이 정규식과 일치하면 내용이 추가 된 행을 출력하십시오.
    • 그렇지 않으면, 같은 줄을 출력하십시오.

0

ed명령을 사용하여 내 자신의 질문에 대한 해결책을 찾았습니다.

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

텍스트는 27 줄을 포함 할 수 있습니다. 텍스트 파일에서 27 줄을 복사하고 구성 파일에 27 줄을 붙여 넣을 수 있습니다. 그러나 ed동일한 구성 파일에 더 많은 텍스트를 추가 하려면 명령을 동시에 실행해야 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.