現在、ファイルにテキストを追加するためにecho "Hello World" >> file.txt
を使用していますが、特定の文字列の下にテキストを追加する必要もあります。たとえば、「[オプション]」と言いましょう。sed
を使用して可能ですか?
例えば:
入力ファイル
Some text
Random
[option]
Some stuff
出力ファイル
Some text
Random
[option]
*inserted text*
Some stuff
一致後に行を追加
sed '/\[option\]/a Hello World' input
一致する前に行を挿入
sed '/\[option\]/i Hello World' input
さらに、sedに-i.bkp
オプションを使用して、バックアップを取り、入力ファイルをインプレースで編集できます。
はい、sed
で可能です:
sed '/pattern/a some text here' filename
例:
$ cat test
foo
bar
option
baz
$ sed '/option/a insert text here' test
foo
bar
option
insert text here
baz
$
awk
の場合:
awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}' infile
一部の文字は文字どおりに含めることができないため、エスケープシーケンス(バックスラッシュで始まる)を使用する必要があることに注意してください。リテラルのバックスラッシュを出力するには、\\
。
実際にはsed
と同じですが、さらに、テキストに埋め込まれた各改行の前にバックスラッシュを付ける必要があります。
sed '/PATTERN/a\
add one line\
\\and one more' infile
エスケープシーケンスの詳細については、マニュアルを参照してください。