我想搜索一个模式并将其附加到文件中。
这里确切地说是我的模式的一个例子,文件中有数百个。
<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
我该如何实现?
由于
答案 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