【问题标题】: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/<\/*DISP>/ /g 将 <DISP> 或 </DISP> 标记删除一个空格
【解决方案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