shell - sed第一行 - sed部分替换




當找到與sed匹配時替換整行 (2)

如果匹配模式,我需要用sed替換整行。 例如,如果該行是'一二二四四'並且如果'六'那麼,那麼整行應該用'fault'替換。


上面的答案對我來說很好,只是提到另一種方式

匹配單個模式並替換為新模式:

sed -i '/six/c fault' file

匹配多個模式並替換為新模式(連接命令):

sed -i -e '/one/c fault' -e '/six/c fault' file

您可以使用以下任一方法執行此操作:

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 。 這將在包含match行中執行sed 's/match/replacement/'表達式。 在你的情況下,這將是:

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

如果我們有'一二六四十一三四'並且我們想把'八'和'十一'作為我們的“壞”字怎麼辦?

在這種情況下,我們可以將-e用於多個條件:

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

等等。

或者:

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






match