代码之家  ›  专栏  ›  技术社区  ›  Kim

在两个字符串之间搜索跨越多行且不包含其他字符串的模式,然后替换为新值

  •  0
  • Kim  · 技术社区  · 2 年前

    标题可能有点模糊,但我有一个文件包含这样的内容

    <Tag>
     <Tag 
        111
        222
     />
    </Tag>
    

    使用bash脚本(grep、sed、awk等),我想搜索内部标记,并用一些新内容替换它

     <Tag>
         <Tag 
            333
            444
         />
        </Tag>
    

    新内容可以全部放在一行中,即 <Tag 333 444 /> 我正在努力只搜索内部标记,我找不到一种方法来提取以 <Tag /> 但不包含 > .任何帮助都将不胜感激。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Ed Morton    2 年前

    如果是这样,使用GNU sed -E -z ,并不是你所需要的全部,然后编辑你的问题,以提供更具代表性的样本输入/输出,包括你的案例,但这不适用于:

    $ sed -Ez 's:<Tag[^<>]+/>:<Tag 333 444 />:' file
    <Tag>
     <Tag 333 444 />
    </Tag>