構文を使用して、IPv4アドレスの最後の部分と最初の部分を抽出でき${var##pattern}
ます${var%%pattern}
。
IP=109.96.77.15
echo IP: $IP
echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*}
echo 'Extract the last section using ${var##pattern}: ' ${IP##*.}
パラメータ拡張を使用してIPv4アドレスの2番目または3番目の部分をどのように抽出できますか?
これが私の解決策です。配列を使用してIFS変数を変更します。
:~/bin$ IP=109.96.77.15
:~/bin$ IFS=. read -a ArrIP<<<"$IP"
:~/bin$ echo ${ArrIP[1]}
96
:~/bin$ printf "%s\n" "${ArrIP[@]}"
109
96
77
15
また、およびコマンドを使用していくつかのawk
ソリューションを作成しました。sed
cut
今私の質問は:より簡単な解決策はありますか?パラメータ拡張配列とIFSの変更を使用しないものは何ですか?
ベストアンサー1
IFSのデフォルト値を想定すると、次のように各オクテットを独自の変数に抽出できます。
read A B C D <<<"${IP//./ }"
または配列に入れます。
A=(${IP//./ })