패턴 일치 후 새 줄을 추가하기 위해 sed를 사용할 때 줄 바꿈을 추가하는 데 문제가 있습니다.

패턴 일치 후 새 줄을 추가하기 위해 sed를 사용할 때 줄 바꿈을 추가하는 데 문제가 있습니다.

다음 명령을 사용하여 패턴(Rel_Tag_St_bit)을 검색한 후 파일에 다음 줄을 추가했습니다.

sed -i -e '/Rel_Tag_St_bit/a\'$'\n''\ methods.mavenWithGoals("mvn so:s -f abc/pom.xml")' file

이 줄을 추가한 후에는 같은 줄에 새로 추가된 줄 뒤에 다음 줄이 추가되기 때문에 줄 바꿈이 필요합니다.

입력 예:

Line1 (pattern match)managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
Line 2 (append ) methods.mavenWithGoals("mvn so:s -f abc/pom.xml") methods.mavenWithGoals("deploy -DaltDeploymentRepository=)
Line 3 (appears on second line itself) 

따라서 여기서 세 번째 줄 [methods.mavenWithGoals("deploy -DaltDeploymentRepository=)] 은 두 번째 추가 줄에 나타납니다.

예제 출력:

1)managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
2)methods.mavenWithGoals("mvn so:s -f abc/pom.xml")
3)methods.mavenWithGoals("deploy -DaltDeploymentRepository=) 

답변1

원본 파일에 다음이 포함되어 있다고 가정합니다.

$ cat file
managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
methods.mavenWithGoals("deploy -DaltDeploymentRepository=)

다음을 사용하여 수정할 수 있습니다.

$ sed -e '/Rel_Tag_St_bit/a\'$'\nmethods.mavenWithGoals("mvn so:s -f abc/pom.xml")\n' file
managedScripts.Rel_Tag_St_bit("${env.templo_directory}/version.txt")
methods.mavenWithGoals("mvn so:s -f abc/pom.xml")
methods.mavenWithGoals("deploy -DaltDeploymentRepository=)

즉, 쉘(bash, ksh, zsh) C 문자열을 사용하여 $'...'개행을 도입합니다.

답변2

$ sed -i -e '/Rel_Tag_St_bit/G;s/\n/&methods.mavenWithGoals("mvn so:s -f abc/pom.xml")/' file

G여기에서는 원하는 줄 끝에 개행 문자를 추가한 /Rel_Tag_St_bit/다음 이 명령을 사용하여 방금 추가한 개행 문자 뒤에 원하는 텍스트를 붙여넣습니다 G. 개행 문자는 조건부로 추가되므로 s///관심이 없는 행에서는 명령이 실행되지 않고 sed그대로 전달됩니다.

관련 정보