2012-03-23 122 views
1

我想要搜索模式並追加到文件中。找到模板並將其替換並替換爲文件

準確地說,這裏是我的模式的一個例子,文件中有數百個。

  <size>30</size> needs to be replaced with <size>30,-1</size> 

但在地方的30數是一個變量(可以是0-99任意數字)

我是新來的sed,但我已經使用的sed與已知的模式,但不知道如何在模式中存在變量時進行修改。

也只見其中代碼放置在.sed文件樣本

 for example: sed replace.sed datafile.xyz > new.xyz 

我怎麼做到這一點?

感謝

回答

2

隨着sed你可以在更換它存儲與括號匹配的文本的一部分,其中包括:

http://www.grymoire.com/Unix/Sed.html#uh-4

因此,舉例來說:

sed 's:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g' ... 
+0

謝謝...救了我大量的體力勞動 – 2012-03-26 18:11:53

+0

的,如果有什麼從一個線,但在另一個替代ü想匹配? – sloven 2017-09-28 18:27:17

0

。 ..和關於從文件讀取sed命令:

s:<size>\([0-9][0-9]*\)</size>:<size>\1,-1</size>:g 

,並稱之爲:

sed -f commands.sed file.html 

如果你有多個命令,把每一個在自己的路線。

0

我知道這還沒有被標記在perl所以隨時忽略它。但隨着perl's positive look-aheadlook-behind你可以做這樣的事情 -

perl -pe 's/(?<=\<size\>)([0-9]{2})(?=\<\/size\>)/$1,-1/' yourfile