2012-03-23 65 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