2016-11-29 9 views
0

を使用して、MACアドレスを含むlease {...}セクションのIP addressMAC addressを抽出するにはどうすればよいですか?sedスクリプト - 設定セクションからIPアドレスとMACアドレスを抽出するにはどうすればよいですか?

例入力:

lease 192.168.0.188 { 
    starts 0 2015/10/18 10:02:20; 
    ends 0 2015/10/18 10:32:20; 
    cltt 0 2015/10/18 10:02:20; 
    binding state active; 
    next binding state free; 
    hardware ethernet 2c:44:fd:25:f7:fc; 
    uid "\001,D\375%\367\374"; 
    client-hostname "708-PC"; 
} 

lease 192.168.0.71 { 
    starts 0 2015/10/18 10:02:16; 
    ends 0 2015/10/18 10:02:16; 
    tstp 0 2015/10/18 10:02:16; 
    cltt 0 2015/10/18 10:02:16; 
    binding state abandoned; 
    next binding state free; 
} 

出力例:

192.168.0.188 
2c:44:fd:25:f7:fc 

私が使用してみました:これはない

s/lease // ;s/hardware ethernet // ;s/^ // ;/^[^0-9]/d ;s/[^0-9a-z\:\.][\{]// ;s/\;// ;/^$/d 

しかし、正しく動作しません。

答えて

0

gensub()をサポートしている場合:

awk 'BEGIN {RS="lease "} /hardware ethernet/{ match($0,/[[:xdigit:]:]{17}/); print $1; print substr($0, RSTART, RLENGTH) }' your_file 

158.108.30.188 
2c:44:fd:25:f7:fc 

を使用する:

sed -r -n '/lease/{h};/hardware/{H;g;s/lease (.+) \{.*ethernet (.+);/\1\n\2/;p}' your_file 

158.108.30.188 
2c:44:fd:25:f7:fc 
0

あなたawkを使用して、

$ awk -vRS='}' '/lease/ && /hardware ethernet/{r=gensub(/.*lease ([^ ]*).*hardware ethernet ([^;]*).*/,"\\1\n\\2", "g");print r}' file 
158.108.30.188 
2c:44:fd:25:f7:fc 
関連する問題