【问题标题】:find patern and append and replace it in file查找模式并在文件中追加和替换它
【发布时间】:2012-04-08 10:25:32
【问题描述】:

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

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

         <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 

我如何做到这一点?

谢谢

【问题讨论】:

    标签: sed


    【解决方案1】:

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

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

    所以,例如:

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

    【讨论】:

    • 如果你想从一行匹配但在另一行替换怎么办?
    【解决方案2】:

    ...关于从文件中读取 sed 命令:

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

    然后调用它:

    sed -f commands.sed file.html   
    

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

    【讨论】:

      【解决方案3】:

      我知道这没有在perl 下被标记,所以请随意忽略它。但是使用 perl's positive look-aheadlook-behind 你可以做这样的事情 -

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 2011-07-18
        相关资源
        最近更新 更多