我需要帮助。
我需要在下一行得到一个子字符串
11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)
结果必须是:ttl 128
我希望你能帮帮我!
谢谢!
尝试这样做:
echo '11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)' |
grep -oP "\bttl\s+\d+\b"
ttl 128
\b
是一个词边界\s
是一个空间+
表示至少一个或多个前面的字符-P
switch 是 pcre 高级有用的语法grep
-o
switch 表示只打印匹配的部分如果你想把它放在一个变量中:
var=$(
echo '11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)' |
grep -oP "\bttl\s+\d+\b"
)
echo "$var"
尝试使用grep -o 'ttl [0-9]\+'
:
$ echo '11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)' | grep -o 'ttl [0-9]\+'
ttl 128
使用sed:
sed 's/.*[ ]*\(ttl[ ]*[0-9]*\).*/\1/' input