2010-03-26 36 views
0

EDIT
我有一個文件是這樣的:
imagecolor = 0
arrayimagecolorcopy = 0
arrayimagecolorcopy3d = 0
使用sed替換包含'='的整個單詞?

當我使用sed -i -e 's/imagecolor=0/imagecolor=1/'它將改變1和2線。但我只想讓它取代第一線。
我也試過sed與\ < \>和\ b \ b,但沒有運氣。它可能是'='號嗎?我們是否有像-w一樣的grep命令?

謝謝。

+1

每馬克的帖子,應該工作。 – 2010-03-26 21:19:55

回答

2

這似乎爲我工作:

$ echo 'imagecolor=0 
> imagecolorcopy=0 
> imagecolorcopy3d=0' > input.txt 

$ sed -i -e 's/imagecolor=0/imagecolor=1/' input.txt 

$ cat input.txt 
imagecolor=1 
imagecolorcopy=0 
imagecolorcopy3d=0 

如果你只是想使替代的整條生產線相匹配時,嘗試錨固正則表達式:

$ sed -i -e 's/^imagecolor=0$/imagecolor=1/' input.txt 
+0

對不起,我做了一個編輯。 – infinitloop 2010-03-26 21:20:00

+0

如果我將imagecolor傳遞給一個函數,我可以在我的函數中做到這一點: sed -i -e's/^ $ 1 = 0 $/$ 1 = 1'input.txt – infinitloop 2010-03-26 21:26:54

+0

@rashid,是的,但你需要雙倍報價,而不是單引號。順便問一下,你的原始問題是否解決了? – 2010-03-26 21:31:12