2013-08-21 265 views
0

我在linux中使用sed。我已經做了大部分工作,但需要幫助的: 模式的一部分是這樣的:正則表達式來替換模式

document=SomeRanddomAlphaNumeric/10DigitNumber, user= 

一些例子:

我期待找到:

ducument=LKJHuasfb89/9878476578, user= 
ducument=jhdn uryhf 9adu/6767898893, user= 
ducument=iujjnbmr Ohndj88isju/6767898734, user= 

並將它們轉換爲:

ducument=replacetext, user= 
ducument=replacetext, user= 
ducument=replacetext, user= 

我正在使用此命令作爲sed命令:

$ sed -i 's/regex/replacetext/g' $file.txt 

替換文本是不變的,但我需要上述命令的正則表達式。

+1

是**一些例子**預期的輸出? – falsetru

+0

不,他們是模式我想替換它們。我會更新q – Alireza

+0

更新的問題! – Alireza

回答

1

如果前面的文本中不包含任何斜槓字符(/),你可以匹配這樣的10位序列:

sed 's|\(ducument=[^/]*/\)[0-9]\{10\}|\1replacetext|' infile 
+0

呃,謝謝!該命令是否適用於輸入文件中多個相同字符串的發生? – Alireza

+0

@Youhan:如果他們在同一行上,那麼是的,否則你需要在sed命令中加上'g'標誌。 – Thor

1

這sed的應該工作:

sed -i.bak 's/^\(document=\)[^,]*/\1replacetext/' file 
1

這會工作,

sed 's/\(ducument=\)\([^,]\+\)/\1replacetext/g' file