두 패턴 사이에 한 파일의 모든 줄을 다른 파일에 삽입

두 패턴 사이에 한 파일의 모든 줄을 다른 파일에 삽입

파일 1의 내용:

1111
2222
3333
4444

파일 2의 내용:

[webservers]
[databases]

file2의 내용을 다음과 같이 만들고 싶습니다. 모든 행을 추가한 후 새 행을 삽입합니다.

[webservers]
1111
2222
3333
4444

[databases]

답변1

패턴 뒤에 파일을 추가하려면 read 명령을 사용 하고 개행을 삽입하려면 대체 명령을 사용하십시오.seds

sed -e '/\[webservers]/r file1' -e 's/\[databases]/\           
   &/' file2

위에 표시된 대로 개행 문자를 대체 패턴에 포함하려면 백슬래시를 사용하여 이스케이프해야 합니다( &전체 일치 항목을 나타내므로 일치 항목은 개행 문자 앞에 자체적으로 대체됩니다).

[특별한 의미를 억제하려면 이스케이프가 필요합니다 .

답변2

확장된 정규식 모드를 갖춘 GNU sed.

추가할 파일에 후행 개행 문자를 추가하기 위해 여기에서 Sed 명령 "a"를 사용할 수도 있습니다.

sed -E \
  -e '/\[webservers]/r file1' \
  -e '/\[databases\]/r file3' \
  -e '/\[webservers]|\[databases]/a\
' \
file2 >hosts

관련 정보