このsedコマンドでエスケープされた改行文字にはどのような問題がありますか?

このsedコマンドでエスケープされた改行文字にはどのような問題がありますか?

各行の後に行を追加するためにsedを使用しようとしていますtext += num.toString(16);

私のアプローチは次のとおりですReplace every new line with a new line, plus text += num.toString(16);。それは:

sed 's/\
/\
text \+= num\.toString\(16\);/g'

しかし、私はこれを動作させることはできません。私はunterminated substitute patternsedからそれを得ます。

ここに問題がありますか?

BSD sedを使用しています。

ベストアンサー1

以下は使用できません:

s/\
/

s/pattern/replacement/フォームのパターン空間の改行文字と一致します。パターンを解釈する実装によって異なります。 GNU sedとBSD sedはどちらも文字通り改行文字として扱われますが、BSD sedは許可されていませんそしてエラーが発生しました

通常、入力行の末尾では改行を一致させることはできませんが、\nコマンドの結果としてパターンスペースに表示される改行を一致させることができますN

正しい方法はPOSIXLYです。

sed 'a\
text += num.toString(16);
'

または:

sed 's/$/\
text += num.toString(16);/'

おすすめ記事