sed/awk を使用した ifconfig 書式設定

sed/awk を使用した ifconfig 書式設定

ifconfig私はOpenSUSEを使用しています。走ると手にifconfig eth0入る

eth0  Link encap:Ethernet  HWaddr CE:FD:75:DF:A5:6D
      inet addr:172.16.4.177  Bcast:172.16.5.255  Mask:255.255.254.0
      inet6 addr: fe80::adfd:75ef:fedf:v56d/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:11812456 errors:0 dropped:2 overruns:0 frame:0
      TX packets:7000495 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:2591436376 (2471.3 Mb)  TX bytes:9196901478 (8770.8 Mb)

sed以下を使用して、各引数が新しい行に返されるように書式設定したいと思いますawk

   eth0  
         Link encap:Ethernet
         HWaddr CE:FD:75:DF:A5:6D
         inet addr:172.16.4.177  
         Bcast:172.16.5.255  
         Mask:255.255.254.0
         inet6 addr: fe80::adfd:75ef:fedf:v56d/64 
         Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  
         Metric:1
         RX packets:11812456 
         errors:0 
         dropped:2
         overruns:0 
         frame:0
         TX packets:7000495 
         errors:0
         dropped:0 
         overruns:0 
         carrier:0
         collisions:0
         txqueuelen:1000
         RX bytes:2591436376 (2471.3 Mb)
         TX bytes:9196901478 (8770.8 Mb)

私はifconfig eth0 | sed 's/ /\r/'それを試しましたが、二重空間に分離されていないようです。

答え1

から始めることができます

sed 's/\(:[^: ]\+\) \([^(]\)/\1\n\2/g;s/\()\)/\1\n/;s/^ \+//'

十分に近いはずで、より単純化して最適化できます。結果:

eth0  Link encap:Ethernet
 HWaddr CE:FD:75:DF:A5:6D
inet addr:172.16.4.177
 Bcast:172.16.5.255
 Mask:255.255.254.0
inet6 addr: fe80::adfd:75ef:fedf:v56d/64
Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500
 Metric:1
RX packets:11812456
errors:0
dropped:2
overruns:0
frame:0
TX packets:7000495
errors:0
dropped:0
overruns:0
carrier:0
collisions:0
txqueuelen:1000
RX bytes:2591436376 (2471.3 Mb)
  TX bytes:9196901478 (8770.8 Mb)

答え2

次のスクリプトは=シンボルの中間置換を使用します(必要なシンボルに自由に変更してください)。

#!/bin/sed -f
s/\s\+\s/=/g
/:[^=:]\+:/s/:[^=:]\+ /&=/g
s/^=/\t/
s/ *=$//
s/ *=/\n\t/g

だから

ifconfig eth0 | sed -f script.above

出力:

eth0
    Link encap:Ethernet
    HWaddr 74:2f:68:8b:b8:6e
    inet addr:192.168.1.247
    Bcast:192.168.1.255
    Mask:255.255.255.224
    inet6 addr: fe80::762f:68ff:fe8b:b86e/64
    Scope:Link
    UP BROADCAST RUNNING MULTICAST
    MTU:1500
    Metric:1
    RX packets:3128543
    errors:0
    dropped:1
    overruns:0
    frame:0
    TX packets:1346967
    errors:0
    dropped:0
    overruns:0
    carrier:0
    collisions:0
    txqueuelen:1000
    RX bytes:4538616348 (4.5 GB)
    TX bytes:118149772 (118.1 MB)

関連情報