2016-08-02 99 views
0

我有一個文件test.txt,看起來是這樣的:使用更換一定數目的字符的比賽後SED

something=1something-else=234another-something=5678

我想與something-else=***更換something-else=234,例如,但唯一的信息我有的是「匹配」,即something-else=,等號後面有三個字符。目前,我有這個命令在賽後就行取代一切:

sed -i -e 's/\(something-else=\).*/\1***/' test.txt

結果:something=1something-else=***

我怎樣才能使它適應只替換三個字符,而不是該行的整個休息嗎?

回答

2

您正在尋找

sed -i -e 's/\(something-else=\).\{3\}/\1***/' test.txt 

,或者等價地,

sed -i -e 's/\(something-else=\).../\1***/' test.txt 
1

我該如何適應它只替換三個字符而不是整個行的其餘部分?

您可以使用:

sed 's/\(something-else=\).../\1***/' file 

something=1something-else=***another-something=5678 

這裏...something-else=後正好3個字符匹配。

您也可以使用量詞編號:

sed -E 's/(something-else=).{3}/\1***/' file