使用 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
我正在尝试检索在一行中多次出现的两个字符串之间的值。
这是我得到的:
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