2

我需要帮助。

我需要在下一行得到一个子字符串

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

结果必须是:ttl 128

我希望你能帮帮我!

谢谢!

4

3 回答 3

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是一个空间
  • +表示至少一个或多个前面的字符
  • -Pswitch 是 pcre 高级有用的语法grep
  • -oswitch 表示只打印匹配的部分

编辑

如果你想把它放在一个变量中:

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"
于 2013-01-09T21:53:23.813 回答
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
于 2013-01-09T21:53:35.107 回答
0

使用

sed 's/.*[ ]*\(ttl[ ]*[0-9]*\).*/\1/' input
于 2013-01-09T21:54:33.830 回答