0

( ) だけで( -PPERL )を使用せずに、2 つの文字列/文字の間で何かを GREP したいと思います。-E--extended-regexp

awk、sed、grep -Po でそれを行う方法は知っていますが、それはこの質問ではありません。これだけで可能かどうか尋ねますgrep -E(との間の例を次に示し)ます。

例:

echo "My IP=(192.168.0.1):205 bla bla" | grep -oE '\(\b.*\b\)'

(これは機能しますが、とで結果が得られ)ます。

4

1 に答える 1

0

サンプル テキストでは、parans 間のテキストが IP アドレスのように見え、テキストの残りの部分に IP アドレスのように見えるものが含まれていないことを考えると、parans を省略して IP アドレスを探すことができます。

この式は、IP アドレスのような文字列に一致し、オクテットを 0 から 255 の数値に制限します。

(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])

ここに画像の説明を入力

root@mysystem:~# echo "My IP=(192.168.0.1):205 bla bla" | grep -oE '(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])'
192.168.0.1
root@mysystem:~#
于 2013-08-13T12:38:46.287 に答える