使用 sed 或 awk 检索两个字符串之间的值

Retrieve value between two string using sed or awk

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

这是我得到的:

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

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

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

"1441491171" something stuff possible

非常感谢你的帮助, AL.

您可以使用以下 sed 命令:

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

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

  • s/time=// 删除 time= 前缀
  • s/<\/*DISP>/ /g 通过 space
  • 删除 <DISP></DISP> 标签

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

$ 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