ファイルの特定の文字列の後に新しい行を追加しますか? [コピー]

ファイルの特定の文字列の後に新しい行を追加しますか? [コピー]

今私は使っています。

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使用する必要があります。-ised

  • 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

おすすめ記事