パターンマッチング後に新しい行を追加するために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) 

したがって、ここで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文字列を使用して$'...'改行を導入します。

おすすめ記事