与えられた文字列を含む行だけsedする方法は?

与えられた文字列を含む行だけsedする方法は?

入力する:

Select ASDF 325 sdfg sdflk lk
Select TRG 46sdg rasdftz fsgs 45
Select ASDF 6ffg sdfg 4456 sdrg

出力:

Select ASDF 325 XXXX sdflk lk
Select TRG 46sdg rasdftz fsgs 45
Select ASDF 6ffg XXXX 4456 sdrg

つまり、「sed」「sdfg」を「XXXX」に変換する必要があります。

ただし、「Select ASDF」文字列を含む行でのみ可能です。どうすればいいですか? (sed, awk など:\)

ベストアンサー1

ほとんどのsedコマンドの前に以下を付けることができます。住所適用される行を制限します。アドレスは行番号または区切りの正規表現です/

cat INPUT | sed '/Select ASDF/ s=sdfg=XXXX='

Peter.Oが述べたように、上記のコマンドは埋め込まれsdfgた文字列に最初に現れるものを置き換えますSelect ASDF。正確に一致する項目をsdfg4列目の大文字と小文字に置き換えるには、次の手順を実行する必要があります。

cat INPUT | sed 's/\(^Select ASDF [^ ]* \)sdfg /\1XXXX /'

おすすめ記事