正規表現を使用して文字列からすべての数字とIPを取得するには?

正規表現を使用して文字列からすべての数字とIPを取得するには?

次の例の文字列があるとします。

<ETH0_IP><![CDATA[10.0.100.10]]></ETH0_IP>

私の考えではタブレットこれ最初の数字 そしてこれ知的財産権次の形式を使用してください。

0 10.0.100.10

sed 's@^[^0-255]*\([0-255]\+\).*@\1@'最初の()番号とIP(grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')を抽出する方法を知っていますが、その時1行で達成できるかどうか知りたいです。

ベストアンサー1

すべての(整数)数値とすべてのIP(v4)アドレスが必要な場合は、grepを使用して正規表現に代替エントリを追加してください。

... | grep -oE '[0-9]+|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'

これにより、1行に1つの値が印刷され、もちろん最後0からキャプチャされます。ETH0


上記のような構造の数字とIPを含む入力行だけが必要な場合(他の構造は必要ありません)、たとえばsedを使用できます。

... | sed -nEe 's,.*<ETH([0-9]+)_IP><!\[CDATA\[([0-9.]+)\]\]></ETH[0-9]+_IP>.*,\1 \2,p'

\1そして、括弧内の最初と2番目のグループに対応することは、\2明確さと怠惰のためにここにIPを一致させました。[0-9.]+


またはPerlでも同様です:

... | perl -ne 'print "$1 $2\n" if m,<ETH([0-9]+)_IP><!\[CDATA\[([0-9.]+)\]\]></ETH[0-9]+_IP>,'

おすすめ記事