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スペースです
  • +少なくとも1つ以上の先行文字を意味します
  • -Pswitchは、PCREの高度な便利な構文です。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"
于 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 に答える