我需要帮助。
我需要在下一行中获得一个子字符串
11:46:24.851239 IP (tos 0x0, ttl 128, id 11289, offset 0, flags [none], proto UDP (17), length 229)
结果必须是:ttl 128
我希望你能帮助我!
谢谢!
答案 0 :(得分:4)
尝试这样做:
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是grep
-o
切换表示仅打印匹配的部分如果你想把它放在一个变量中:
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"
答案 1 :(得分:2)
尝试使用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
答案 2 :(得分:0)
使用sed:
sed 's/.*[ ]*\(ttl[ ]*[0-9]*\).*/\1/' input