
各行の後に行を追加するために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 pattern
sedからそれを得ます。
ここに問題がありますか?
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);/'
答え2
以下も同様ですawk
。
awk '{print $0"\ntext += num.toString(16);"}' file
この場合、各行はそのまま印刷され、新しい行に印刷されます awk
。text += num.toString(16);