특정 줄 아래에 정보 추가

특정 줄 아래에 정보 추가

파일의 특정 줄 아래에 정보가 포함된 파일을 추가하는 방법을 알고 싶습니다.

file1.txt예를 들어 다음 줄이 있습니다 .

line 1
line 2
line 3

그리고 특정 위치에 file2.txt추가하고 싶은 정보 가 있습니다.file1.txtline 2

이것에 대해 무엇을 해야 합니까?

답변1

Sed의 R[ead] 명령 사용

당신은 sed를 사용할 수 있습니다r 명령파일을 읽으십시오. 예를 들어, 행 번호를 기준으로 행을 일치시키려면 다음을 수행하십시오.

sed '2 r /tmp/file2.txt' /tmp/file1.txt

또는 내용별로 행을 일치시키려는 경우:

sed '/^line 2/ r /tmp/file2.txt' /tmp/file1.txt

이는 GNU 확장에 의존하지 않는 표준 명령이므로 다양한 sed 구현에서 작동해야 합니다.

위 명령은 표준 출력에 결과를 인쇄합니다. 원본 파일을 수정하려면 -ised 뒤에 이 옵션을 추가하세요(이 옵션은 Linux 및 Cygwin에서 작동하지만 모든 UNIX 시스템에서는 작동하지 않음).

답변2

또한 다음을 sed통해 이 작업을 수행할 수 있습니다 awk.

awk '1; /line 2/ { while(getline < "file2.txt") print }' file1.txt

file2.txt그러면 모든 line 2만남이 삽입됩니다.

이것이 1기본 블록입니다 { print $0 }.

그러면 출력이 표준 출력으로 전송됩니다. 덮어쓰려면 file1.txt출력을 임시 파일에 저장하고 덮어씁니다.

awk '1; /line 2/ { while(getline < "file2.txt") print }' file1.txt > file1.txt.tmp
mv file1.txt.tmp file1.txt

편집하다

고정 문자열 일치를 ==보다 안정적으로 수행하려면(예: 언급된 문자열 일치) 다음 조건을 사용하십시오.

awk '1; $0 == "\"zend_extension=/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so\"" { while(getline < "file2.txt") print }' file1.txt

이를 위해서는 전체 라인이 일치해야 합니다.

관련 정보