次のコマンドを使用してパターン(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)
したがって、ここで3行目[methods.mavenWithGoals("deploy -DaltDeploymentRepository=)]は2行目の追加行に表示されます。
出力例:
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
そのまま渡されます。