文字列の間と次のスペースの前のすべてを一致させる方法

文字列の間と次のスペースの前のすべてを一致させる方法

次の文字列があるとしましょう。

sdffsd sfdfi -ip 192.168.1.1 sdfdf ertret 

「192.168.1.1」または他の有効なIPアドレス(それぞれ0から255までの点で区切られた4つの10進数、例えば172.16.254.1)を抽出したいと思います。

最も簡単な方法は、文字列 "-ip"の間と次のスペース(192.168.1.1とsdfdfの間のスペース)の間のすべてのエントリを一致させるようです。

私は試した:

sed -e 's/-s \(.*\)[[:space:]]/\1/'

しかし役に立たない

ベストアンサー1

現在、あなたの質問は「文字列 '-ip'から次のスペースに抽出する方法」です。次のコマンドはこの質問に答えます。

sed -e 's/^.*-ip \([^ ]*\) .*$/\1/'

仕組みは基本的に「空白以外の文字数」です。[^ ]*

$ echo "sdf sfdi -ip 192.168.1.1 sdf eret" | sed -e 's/^.*-ip \([^ ]*\) .*$/\1/' 192.168.1.1

おすすめ記事