如何删除特定字符串之前的所有内容

时间:2016-12-07 18:04:17

标签: linux awk sed

我需要从wireshark获得干净的输出但是最近我注意到我已经获得输出,其中我的cut命令不再起作用

来自wireshark的数据

C.'¢¢@)ù¨.fEo³@(@¹³³÷÷P*,§ýý {P¹'GET /2015/dec/alltracks/playlist.m3u8

我曾经使用cut -f2 -d" "但现在我发现有些条目带有多个空格,所以我的命令失败了。

如何在GET之前摆脱一切,包括GET这个词?目标是只获得/2015/dec/alltracks/playlist.m3u8

2 个答案:

答案 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