sed を使用してパターンの最初の出現箇所にテキストを追加する

sed を使用してパターンの最初の出現箇所にテキストを追加する

次のようなテキストファイルがあるとします。

Hello world
types=""
Mario
types="Game"

私がやりたいのは、最初に出現するtype=""「program」という単語を見つけて追加することです。次のような出力が必要です:

Hello world
types="program"
Mario
types="Game"

これを Unix シェル スクリプトで使用する必要があります。試したのは次のとおりです。

sed -i '1,/types=""/s/types=""/types="program"/' filename

コマンドを見ると、挿入のみで、追加は行われません。追加を試みましたa\が、まだ機能しません。

答え1

ワンライナーの置換sedはすでに意図したとおりに機能しているようです:

$ cat t.txt
Hello world
types=""
Mario
types="Game"

$ sed '1,/types=""/s/types=""/types="program"/' t.txt

Hello world
types="program"
Mario
types="Game"

質問を編集して、あなたコマンドを実行すると、結果がターミナルに出力されるオプションsedなしで取得されます。-i

ところで、 の範囲は1,/types=""/冗長です。次のように簡略化できます。

sed '/types=""/s/types=""/types="program"/' t.txt

関連情報