linuxのeth 0のIPアドレスを取り出すコマンドを実行してください
5601 ワード
awk、grep、sed、cut
一、従来の方法
二、awkが同時に複数の区切り文字を使用することによって実現する.
三、awkで複数の区切り文字を同時に使用し、複数の区切り文字を正則的に一致させる方法で実現する.
ヒント:本題NRは行番号、区切り記号+番号が一致し、[]内の1つ以上の任意の区切り記号で、ここでは1つ以上のコロンまたはスペースが一致します.
1)awk-Fの後ろには区切り記号「[スペース:]+」が付いており、[スペース:]多区切り記号はスペースまたはコロンで区切られることを意味し、後ろの「+」記号は正規表現であり、前のスペースまたはコロンに一致することを意味し、両者の1つまたは1つ以上である.
2)NR==2とsed-n「2 p」、相当、意味はすべて何行目を選ぶので、例:
[root@oldboy ~]# ifconfig eth0|awk NR==2
inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
3)awk-F'[:]+'の区切り文字を指定すると、異なる文字列で区切られた列は次のようになります.
inet
addr
192.168.7.2
Bcast:192.168.7.255 Mask:255.255.255.0
第1列
2列目
第3列
4列目
後は無視する.
4)答えawkの部分全体は、NR=2で2行目を取り出し、-F'[-:]+マルチセパレータで正規マッチングし、{print$4}で4列目を印刷することを意味します.
本文は「老男の子のlinuxブログ」ブログから
一、従来の方法
- [root@localhost ~]# ifconfig eth0
- eth0 Link encap:Ethernet HWaddr BC:30:5B:C0:CD:4F
- inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
- inet6 addr: fe80::be30:5bff:fec0:cd4f/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:45814755 errors:12 dropped:0 overruns:0 frame:55
- TX packets:14791104 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:4338136769 (4.0 GiB) TX bytes:2483722504 (2.3 GiB)
- Interrupt:16
-
- [root@localhost ~]# ifconfig eth0 |grep 'inet add'
- inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
- [root@localhost ~]# ifconfig eth0 |grep 'inet add'|awk -F ":" '{print $2}'
- 192.168.7.2 Bcast
- [root@localhost ~]# ifconfig eth0 |grep 'inet add'|awk -F ":" '{print $2}'|awk '{print $1}'
- 192.168.7.2
- [root@localhost ~]#
二、awkが同時に複数の区切り文字を使用することによって実現する.
- [root@localhost ~]# ifconfig eth0|grep 'inet addr'
- inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
- [root@localhost ~]# ifconfig eth0|grep 'inet addr'|awk -F'[ :]' '{print $13}'
- 192.168.7.2
- [root@localhost ~]#
- IP 'inet addr’ , awk : , 。
- $n , inet , $13, , ?
三、awkで複数の区切り文字を同時に使用し、複数の区切り文字を正則的に一致させる方法で実現する.
- [root@localhost ~]# ifconfig eth0 |awk NR=2
- eth0 Link encap:Ethernet HWaddr BC:30:5B:C0:CD:4F
- inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
- inet6 addr: fe80::be30:5bff:fec0:cd4f/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:45867518 errors:12 dropped:0 overruns:0 frame:55
- TX packets:14808564 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:4343100002 (4.0 GiB) TX bytes:2486006118 (2.3 GiB)
- Interrupt:16
-
- [root@localhost ~]# ifconfig eth0 |awk NR==2
- inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
- [root@localhost ~]# ifconfig eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
- 192.168.7.2
- [root@localhost ~]#
ヒント:本題NRは行番号、区切り記号+番号が一致し、[]内の1つ以上の任意の区切り記号で、ここでは1つ以上のコロンまたはスペースが一致します.
1)awk-Fの後ろには区切り記号「[スペース:]+」が付いており、[スペース:]多区切り記号はスペースまたはコロンで区切られることを意味し、後ろの「+」記号は正規表現であり、前のスペースまたはコロンに一致することを意味し、両者の1つまたは1つ以上である.
2)NR==2とsed-n「2 p」、相当、意味はすべて何行目を選ぶので、例:
[root@oldboy ~]# ifconfig eth0|awk NR==2
inet addr:192.168.7.2 Bcast:192.168.7.255 Mask:255.255.255.0
3)awk-F'[:]+'の区切り文字を指定すると、異なる文字列で区切られた列は次のようになります.
inet
addr
192.168.7.2
Bcast:192.168.7.255 Mask:255.255.255.0
第1列
2列目
第3列
4列目
後は無視する.
4)答えawkの部分全体は、NR=2で2行目を取り出し、-F'[-:]+マルチセパレータで正規マッチングし、{print$4}で4列目を印刷することを意味します.
本文は「老男の子のlinuxブログ」ブログから