sedで一致が見つかったら行全体を置換する 質問する

sedで一致が見つかったら行全体を置換する 質問する

パターンに一致する場合は、行全体を に置き換える必要がありますsed。たとえば、行が「one two six three four」で、「six」がある場合は、行全体を「fault」に置き換える必要があります。

ベストアンサー1

次のいずれかの方法で実行できます。

sed 's/.*six.*/fault/' file     # check all lines
sed '/six/s/.*/fault/' file     # matched lines -> then remove

を含む行全体を取得しsix、 に置き換えますfault

例:

$ cat file
six
asdf
one two six
one isix
boo
$ sed 's/.*six.*/fault/'  file
fault
asdf
fault
fault
boo

それは、この解決策Sedを使用して文字列を含む行全体を置換する

より一般的には、次のような表現を使うことができますsed '/match/s/.*/replacement/' file。これにより、sed 's/match/replacement/'を含む行の式が実行されますmatch。あなたの場合、次のようになります。

sed '/six/s/.*/fault/' file

「1、2、6、8、11、3、4」があり、「8」と「11」を「悪い」単語として含めたい場合はどうすればよいでしょうか。

この場合、-e複数の条件に を使用できます。

sed -e 's/.*six.*/fault/' -e 's/.*eight.*/fault/' file

等々。

または:

sed '/eight/s/.*/XXXXX/; /eleven/s/.*/XXXX/' file

おすすめ記事