今私は使っています。
echo sed '/\Random/a \
newly added line' info.txt
ファイルにいくつかのテキストを追加しますが、特定の文字列の下にランダムにテキストを追加する必要があります。 sedを使用して可能であることはわかっていますが、スクリプトが実行されるとコンソールに新しいファイルの内容が表示されますが、実際には表示されません。ファイルでも同じ変更が行われます。
例:-
入力ファイル
Some text
Random
Some stuff
結果ファイル
Some text
Random
newly added line
Some stuff
答え1
echo
環境に特定のものがない場合は、同じコマンドが出力を提供するため、これは単に誤字であると仮定します。
sed '/Random/a\
newly added line' info.txt
stdoutに送信する代わりに実際にファイルを操作するには、構文は異なりますが、実装でサポートされているいくつかのスイッチをsed
使用する必要があります。-i
sed
GNU、busybox、NetBSD、OpenBSD最小:
sed -i '/Random/a\ newly added line' info.txt
FreeBSD、MacOS:
sed -i '' '/Random/a\ newly added line' info.txt
この
-i
スイッチはSolarisでは使用できませんsed
。
-i
必要に応じて動作することを確認するには、最初から実行しないことをお勧めします。その事実が確認されたら、それを追加する-i
と必要なものが得られます。
ファイルの内容は以下のとおりで、以下から確認できますcat info.txt
。
Some text
Random
newly added line
Some stuff