ここには、次の内容を含む非常に単純なテキストファイルがあります。
line1
line2
line3
line4
sed(または他のアプリケーション)を介してコンテンツを変更したいです。
line1
line2
#this line was added by sed
line3
line4
だから試してみましたが、sed -e "s/line2/line2\\n#this line was added by sed/" my-text-file-here.txt
結果は次のとおりです。
line1
line2\n#this line was added by sed
line3
line4
正しく行う方法についてのアイデアはありますか?ありがとう
ベストアンサー1
GNU sedを使用すると、コードは正しく機能します。
$ sed -e 's/line2/line2\n#this line was added by sed/' file
line1
line2
#this line was added by sed
line3
line4
ただし、BSD sed では、\n
代替テキストでは改行文字は考慮されません。シェルがbashの場合、良い回避策は$'...'
改行を挿入することです。
$ sed -e $'s/line2/line2\\\n#this line was added by sed/' file
line1
line2
#this line was added by sed
line3
line4
bashに加えて、zshとkshもサポートされています$'...'
。
別のオプションは、実際の改行文字を挿入することです。
$ sed -e 's/line2/line2\
#this line was added by sed/' file
line1
line2
#this line was added by sed
line3
line4
アップデート:cshの最後のオプションには追加が必要です\
。
% sed -e 's/line2/line2\\
#this line was added by sed/' file
line1
line2
#this line was added by sed
line3
line4