実際には.というファイルがありますtest1.txt
。
そのファイルには次の5行があります。
'test message1'
'test message2'
'test message3'
'test message4'
'test message5'
これで、この行の後にファイル'testing testing'
に新しい行を追加したいと思います。どうすればいいですか?test1.txt
'test message1'
答え1
これはa
このコマンドは次のことを行います。
sed -e "/test message1/a\\
'testing testing'" < data
このコマンドは次のことを行います。
現在のサイクルの終わりまたは次の入力行を読み取るときに、出力のためにこのコマンドの後に続くテキスト行(出力から削除される\で終わる最後の行を除く)をキューに入れます。
したがって、この場合、pendと行を一致させると、/test message1/
ファイルの新しい行となるテキスト引数 ""を使用してコマンドを実行します。a
'testing testing'
'test message1'
'testing testing'
'test message2'
'test message3'
'test message4'
'test message5'
最後ではなく各行をバックスラッシュで終了すると、複数行を挿入できます。上記の二重バックスラッシュは、シェルがそれを食べることを防ぐためのものです。スタンドアロンスクリプトで使用している場合は、sed
単一のバックスラッシュを使用してください。 GNUはまた、後ろsed
に1行のテキストを許可しますa
が、これは移植可能ではありません。
答え2
そしてsed
:
sed "s/'test message1'/'test message1'\n'testing testing'/g"
- 「テストメッセージ1」を検索してください。
- 「テストメッセージ1」[新しい行]「テストテスト」に置き換えます。
~からこの回答、以下を使用することもできます。
sed "/'test message1'/a 'testing testing'"
- 「テストメッセージ1」を検索してください。
- ゲームの後ろに「テストテスト」を追加してください。
答え3
POSIX的に:
$ sed -e "/'test message1'/s//&\\
'testing testing'/" file
'test message1'
'testing testing'
'test message2'
'test message3'
'test message4'
'test message5'