我使用下面的命令来搜索模式 (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=)
即使用 shell(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
让它们按原样传递。