我需要从wireshark获得干净的输出但是最近我注意到我已经获得输出,其中我的cut命令不再起作用
来自wireshark的数据
C.'¢¢@)ù¨.fEo³@(@¹³³÷÷P*,§ýý {P¹'GET /2015/dec/alltracks/playlist.m3u8
我曾经使用cut -f2 -d" "
但现在我发现有些条目带有多个空格,所以我的命令失败了。
如何在GET之前摆脱一切,包括GET这个词?目标是只获得/2015/dec/alltracks/playlist.m3u8
答案 0 :(得分:1)
您可以使用以下正则表达式
来完成此操作 .*GET
.*
识别任何字符(*表示零或更多),GET
识别您想要的内容,包括前导空格,因此输出将是您想要的
sed "s/.*GET //g"
我们会用零(//
)替换我们发现的东西。
用于替代,而g用于全局(根据具体情况,可能需要也可能不需要,但如果您愿意修改多于一行,我建议您使用它。
答案 1 :(得分:0)
使用GNU grep
标记和-P
标记启用的PCRE-mode中的-o
仅打印匹配的字词。
grep -Po ".*GET \K(.*)" input-file
/2015/dec/alltracks/playlist.m3u8
使用perl regEx
perl -nle 'print "$1" if /.*GET (.*)/' input-file
/2015/dec/alltracks/playlist.m3u8