2
我想在sed命令的輸出部分使用搜索模式。例如,考慮下面的sed命令:sed:在輸出中使用搜索模式
sed '/HOSTNAME=/cHOSTNAME=fred' /etc/sysconfig/network
我想引用這些搜索的一些轉義序列來代替「主機名=」的第二個實例。事情是這樣的:
# this doesn't actually work
sed '/HOSTNAME=/c\?=fred' /etc/sysconfig/network
是否anywone知道是否有辦法做到這一點還是我要重複的答案搜索詞。
我知道我可以做這樣的事情:
sed 's/\(HOSTNAME=\)/\1fred/' /etc/sysconfig/network
但是,這是我想要什麼微妙的不同 - 例如#HOSTNAME =祖格會變成#HOSTNAME =弗雷德,但我不想要領先的「#」。第一個sed示例處理這種情況。
雖然第二種形式確實做我想做的 - 我仍然希望能找到一種方法,重複模式空間輸出 - 希望使用'c'命令而不是's'命令,如問題所示。 但是,如果沒有其他答案,那麼這將是被接受的答案。 – JohnnyLambada 2009-11-24 21:01:27
您可以將匹配從's'命令移至地址,但在這種簡單情況下這不是必需的。這是它的樣子:'sed'/.*\(HOSTNAME=\).*/ s // \ 1fred /'/ etc/sysconfig/network''''''''''''''''''''''''' \'只能使用文本文本,它們不會做任何*替換* - 這就是///'命令的用途。 – 2009-11-24 21:30:28
好的,夠好 - 謝謝! – JohnnyLambada 2009-11-25 20:11:13