の行が(avまたはavpgw)で始まり、新しいテキストで置き換えられた場合は、 というように、最初に新しいテキストを挿入するだけです。Sedコマンド:もし存在すれば置き換える方法は?
どうすればsedを使用できますか?
の行が(avまたはavpgw)で始まり、新しいテキストで置き換えられた場合は、 というように、最初に新しいテキストを挿入するだけです。Sedコマンド:もし存在すれば置き換える方法は?
どうすればsedを使用できますか?
あなたは、このようにそれを行うことができます。
sed -e 's/^avpgw/new text/' -e t -e 's/^av/new text/' -e t -e 's/^/new text/' file
これは(/// S)new text
のパターンを置き換えると終了(t)にジャンプします。それ以外の場合は、次のパターンを試みます。 sed commands summaryも参照してください。
あなたはまた、;
でコマンドを区切ることができます。
sed 's/^avpgw/new text/; t; s/^av/new text/; t; s/^/new text/' file
やsedコマンドファイル内のコマンドを入れる:
s/^avpgw/new text/
t
s/^av/new text/
t
s/^/new text/
をし、このようにそれを呼び出す:
sed -f commandfile file
大文字小文字を無視する場合は、のように置換コマンドの最後にiを追加します。別の方法は、文字セットs/^[aA][vV]/new text/
でそれを綴ることです。しかし、具体的にはsed
ではありません。一般的な正規表現を検索することができます。
これは(GNU SED)あなたのために働くかもしれない:あなたの応答のための
sed -r 's/^av(pgw)?.*/replacement/;t;s/^/replacement /' file
'(pgw){、1}'は良いでしょうか? –
@JanitoVaqueiroFerreiraFilho良い点。 GNU sedはオプションのメタ文字 '?'も提供しています。これは同じ0または1を意味します。しかし、文字列 'avpgwpgw'の可能性がない場合、' * 'は問題ありません。 – potong
ありがとう!私はそれがどれくらい入力を信頼できるかにかかっていると思う=) –
感謝を。それは完璧にうまくいった。大文字と小文字を区別しない方法がありますか?私はAv、AV、avなどをすべて交換する必要があることを意味します。 – user1765709
@ user1765709文字セットを使用することも、修飾子を追加することもできます。私の修正された答えを見てください。 –
私はcentos上にあり、これは動作していないようです。どんな考え? – Dobler