2016-09-06 8 views
0

私はポストと呼ば:シェルスクリプトに見つからなければ、見つかった行を置き換えるか、ファイルの最後に追加する方法は?

Sed command : how to replace if exists else just insert?

https://superuser.com/questions/590630/sed-how-to-replace-line-if-found-or-append-to-end-of-file-if-not-found

をしかし、解決策のどれも動作しているようだありません。なぜ誰かが説明できますか?

私は、その特定のファイル

sed -e 's/^avpgw/new text/' -e t -e 's/^av/new text/' -e t -e 's/^/new text/' file 

sed '/^FOOBAR=/{h;s/=.*/=newvalue/};${x;/^$/{s//FOOBAR=newvalue/;H};x}' infile 
+7

[mcve]を入力してください。 – fedorqui

+0

には少なくとも-iオプションがあります –

答えて

3

テストケース行うことで、端末上でコマンドを実行しています:awkでは

$ cat > file 
match 
miss 

ソリューション:

$ awk 'sub(/match|$/,"hit")' file 
hit 
misshit 

すなわち。最初のmatchまたはレコードの最後を$のどちらか早い方に置き換えてください。 sed

0

sed '/match/{s/match/replace/g;p;D}; /match/!{s/$/replace/g;p;D}' file 

テスト:

$ cat file 
some text... match ... some text 
some text only here... 
..... here also... 

$ sed '/match/{s/match/replace/g;p;D}; /match/!{s/$/replace/g;p;D}' file 
some text... replace ... some text 
some text only here...replace 
..... here also...replace 

注:代わりに編集ファイル用 使用-i

関連する問題