找到模式并追加并将其替换为文件

时间:2012-03-23 20:51:15

标签: sed

我想搜索一个模式并将其附加到文件中。

这里确切地说是我的模式的一个例子,文件中有数百个。

         <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 

我该如何实现?

由于

3 个答案:

答案 0 :(得分:3)

使用sed,您可以将部分匹配的文本与括号一起存储并将其包含在替换中:

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

所以,例如:

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

答案 1 :(得分:0)

...以及从文件中读取sed命令:

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

并称之为:

sed -f commands.sed file.html   

如果您有多个命令,请将每个命令放在自己的行中。

答案 2 :(得分:0)

我知道这个没有在perl下标记,所以请随意忽略它。但是使用 perl's positive look-ahead look-behind ,您可以执行以下操作 -

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