web-dev-qa-db-ja.com

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

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

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

私がやりたいのは、type=""の最初の出現を見つけて、Wordの「プログラム」を追加することです。次のように出力する必要があります:

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

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

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

コマンドの見た目は、追加ではなく挿入のみです。 a\を追加しようとしましたが、まだ機能しません。

3
VRVigneshwara

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オプションなし)を実行したときにyouが何を取得するかを示すことは価値があるかもしれません結果が端末に出力されるようにします)。

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

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