파일의 특정 줄 아래에 정보가 포함된 파일을 추가하는 방법을 알고 싶습니다.
file1.txt
예를 들어 다음 줄이 있습니다 .
line 1
line 2
line 3
그리고 특정 위치에 file2.txt
추가하고 싶은 정보 가 있습니다.file1.txt
line 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 구현에서 작동해야 합니다.
위 명령은 표준 출력에 결과를 인쇄합니다. 원본 파일을 수정하려면 -i
sed 뒤에 이 옵션을 추가하세요(이 옵션은 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
이를 위해서는 전체 라인이 일치해야 합니다.