2017-02-28 12 views
-1

私は私のIPアドレスとサブネットマスクを取得したいと思います。 ifconfigの出力はsedに "貼り付け"なければなりません。したがって、sedはIPとサブネットマスクだけを取得するために出力を変更する必要があります。コマンドsedを使用してipとサブネットマスクを取得

同様:

ifconfig | sed -n -e s/:127\.0\.0\.1 //g -e s/ *inet addr:\([0-9.]\+\).*/\1/gp 

編集:これにより

ifconfig | sed -rn '/((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])/p' 

私は、サブネットマスクとIPを得たが、私はまた、BCASTを得ました。サブネットマスクとipだけを取得する正規表現を変更するにはどうすればいいですか?編集の

出力:

inet Adresse:192.168.142.191 
Bcast:192.168.255.255 
Maske:255.255.0.0 
inet Adresse:127.0.0.1 
Maske:255.0.0.0 

私はこの出力をしたい:

inet Adresse:192.168.142.191 
Maske:255.255.0.0 
+0

ipconfigまたはifconfig? sedを使用する前に出力を追加して最終的に期待される出力を – Sundeep

+0

@Sundeep編集を参照すると便利です –

答えて

0

はこれを試してみてください:

ifconfig | grep -v 127.0.0.1 | awk '/inet/{gsub("addr:", "", $2); print $2}; /netmask/{gsub("netmask", "", $2); print $4};' 

それは出力だが、ループバックインターフェース "LO 127.0.0.1" を除外します。 ipまたはマスクあたり

10.0.0.1 
255.255.0.0 
192.168.1.46 
255.255.255.0 

一行:そして、このようにあなたと出力に与えます。または、ifconfigの代わりにifconfig eth0を実行するインターフェイスを1つだけ指定することもできます。このようにして、目的のインターフェイスのみを印刷します。

あなたが「INET」との正確な形式をしたい場合は、「住所」は、などあなたがawkのにそれを追加することができます。

ifconfig | grep -v 127.0.0.1 | awk '/inet/{gsub("addr:", "", $2); print "inet Adresse:"$2}; /netmask/{gsub("netmask", "", $2); print "Maske:"$4};' 

その出力は次のようになります。

inet Adresse:10.0.0.1 
Maske:255.255.0.0 
inet Adresse:192.168.1.46 
Maske:255.255.255.0 
0

しなかった理由

ifconfig |sed -n 's/inet addr:\(.*\)Bcast:.*Mask:\(.*\)/\1 \2/p' 

しかし、より具体的な正規表現が必要です。あなたはgoogleで見つけることができます。

0

-nオプションと検索置換コマンドs/regexp/replacement/を組み合わせることを検討してください。それは全体のラインを一致させると、あなたが必要とする唯一のビットでそれを置き換える:

ifconfig | sed -rn 's/^.*(inet[0-9. ]+netmask[0-9. ]+).*$/\1/p' 

あなたifconfigコマンド出力は、INETネットマスクに用部分を変更する必要がある場合がありますので、私のものと異なるように思えますそれはあなたのシステム上で動作するようになっています。

関連する問題