来自头shell脚本的子串

时间:2013-01-10 15:55:46

标签: linux shell unix grep

我需要帮助,我有来自tcpdump标题的下一行:

11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)

我需要指定header的值(例如:proto),结果必须是:

proto UDP (17)

我正在尝试使用那个shell脚本程序:

var=flags
echo '11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)' | grep -oP "\b$var+"

1 个答案:

答案 0 :(得分:3)

一种方式:

echo '11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)' | grep -o 'proto [^,]\+'

使用变量:

$ x="proto"
$ echo '11:46:24.85123........., proto UDP (17), length 229)' | grep -o "${x} [^,]\+"
proto UDP (17)