sed
パターンに一致する場合は、行全体を置き換える必要があります。たとえば、行が 'one two six three four' で、'six' がある場合、行全体を 'fault' に置き換える必要があります。
質問する
106004 次
4 に答える
98
次のいずれかで実行できます。
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
「ワン ツー シックス エイト イレブン スリー フォー」があり、「エイト」と「イレブン」を「悪い」単語として含めたい場合はどうなるでしょうか。
この場合-e
、複数の条件に を使用できます。
sed -e 's/.*six.*/fault/' -e 's/.*eight.*/fault/' file
等々。
またはまた:
sed '/eight/s/.*/XXXXX/; /eleven/s/.*/XXXX/' file
于 2013-05-08T12:15:46.240 に答える
3
これはうまくいくかもしれません(GNU sed):
sed -e '/six/{c\fault' -e ';d}' file
また:
sed '/six/{c\fault'$'\n'';d}' file
于 2013-05-08T14:05:49.040 に答える