ifconfig 出力フィルタリング

ifconfig 出力フィルタリング

ifconfigでIPv4 IPの最初の3オクテットを選択しようとしています。私はこれをどうしますか?この段階でどのように選択するのかわかりません。

[root@hostname ~]# ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | awk '{print $2}'

出力:

addr:10.20.1.3

私が最終的に望むのは10.20.1最終結果です。

答え1

すべてのインターフェイスにawkを使用してください。

ifconfig | awk '/Link encap/{eth=$1} ; /inet addr/{sub(/addr:/, "", $2) ; sub(/\.[0-9]*$/,"",$2) ; addr=$2 ; print eth, addr)'

結果:

eth0 192.168.0
lo 127.0.0

答え2

探しているIPアドレスを想定して、eth0次のことを行う必要があります。

ifconfig | grep -A1 eth0 | grep "inet addr" | sed 's/inet addr://' | awk '{ print $1 }' | sed 's/\.[0-9]*$//'

答え3

sed実際の住所を使用するのも面倒でした。cutこのために使用する方が透明で正しく理解しやすいです!

| sed -e 's/inet_addr://' | cut -d. -f 1-3元のコマンドの最後に以下を追加します。

ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | awk '{print $2}' | sed -e 's/inet_addr://' | cut -d. -f 1-3  

またはcut代わりに使用してくださいawk

ifconfig | grep "inet addr:"  | grep -v "127.0.0.1" | cut -w -f 2 | sed -e 's/inet_addr://' | cut -d. -f 1-3  

関連情報