シェルスクリプトを使用してファイルにIPアドレスがあるかどうかを確認するにはどうすればよいですか?

シェルスクリプトを使用してファイルにIPアドレスがあるかどうかを確認するにはどうすればよいですか?

いくつかの出力を生成するスクリプトがあります。次のIPアドレスの出力を確認したいと思います。

159.143.23.12
134.12.178.131
124.143.12.132

if (IPs are found in <file>)
then // bunch of actions //
else // bunch of actions //

fgrep良いアイデアですか?

bashを使用できます。

答え1

はい、必要に応じて使用できるオプション/ツールがたくさんあります。私はこれを試してみましたがうまくいきます。

ifconfig | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"

したがって、grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b"grepを使用して出力からIPアドレスを取得できます。

答え2

たとえば、ファイルが呼び出された場合は、ips次のように書くことができます。

while read -r ip
    do
        if [[ $ip == "$1" ]]; then
            shift
            printf '%s\n' 'action to take if match found'
        else
            printf '%s\n' 'action to take if match not found'
        fi
    done < ips

その後、スクリプトに従ってパラメータを渡すことができます。

./myscript 159.143.23.12 134.12.178.131 124.143.12.132 124.143.12.132

答え3

この回答に基づいて回答を開始します。

はい、必要に応じて使用できるオプション/ツールがたくさんあります。私はこれを試してみましたがうまくいきます。

grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" a を設定すると、grep -oE "\b を使用できます。 ( [0- 9]{1,3}.){3}[0-9]{1,3}\b" 出力から IP アドレスを取得します。

答えをフルレングスIPv6などに変換します。

fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}\b" -- file

/ nnnを維持したい場合(存在する場合):

fgrep -oE "\b([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}(/[0-9]{1,3}){0,1}\b" -- file

「::」を含むIPv6の短縮バージョンもあります。

より多くのIPv6の答えを見るためにここに見ることができます。 https://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses

答え4

ip -4  addr show eth1 |  grep -oP '(?<=inet\s)\d+(\.\d+){3}'

関連情報