【问题标题】:Retrieve value between two string using sed or awk使用 sed 或 awk 检索两个字符串之间的值
【发布时间】:2015-09-09 09:16:00
【问题描述】:

我正在尝试检索在一行中多次出现的两个字符串之间的值。

这是我得到的:

time="1441491171" <DISP>something</DISP><DISP>stuff</DISP><DISP>possible</DISP>

这些字符串的顺序可能会因附加字符串而改变...

我正在尝试获取这些值如下:

"1441491171" something stuff possible

非常感谢您的帮助, 阿尔。

【问题讨论】:

    标签: string awk sed collect


    【解决方案1】:

    您可以使用以下sed 命令:

    sed 's/time=//;s/<\/*DISP>/ /g'
    

    这是两个命令,用分号隔开:

    • s/time=// 删除 time= 前缀
    • s/&lt;\/*DISP&gt;/ /g&lt;DISP&gt;&lt;/DISP&gt; 标记删除一个空格

    【讨论】:

      【解决方案2】:

      选择匹配项而不是删除不需要的字符串的不同方法:

      $ grep -oP 'time=\K"\d+"|(?<=DISP>)\w+(?=</DISP)' file
      "1441491171" 
      something
      stuff
      possible
      
      $ grep -oP 'time=\K"\d+"|(?<=DISP>)\w+(?=</DISP)' file |tr  '\n' ' '
      "1441491171"  something stuff possible
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2018-01-19
        • 1970-01-01
        • 2012-11-03
        • 2022-06-10
        • 2011-09-16
        • 1970-01-01
        相关资源
        最近更新 更多