いくつかの出力を生成するスクリプトがあります。次の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}'