ホストの元のIPアドレスのリスト

ホストの元のIPアドレスのリスト

私のファイルには次の内容があります。名前の下にIPアドレスを印刷したいです。

Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver1
Address: 17.146.118.156
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver2
Address: 17.146.118.168
Server:     17.128.100.12
Address:    17.128.100.12#53
Name:   Testserver3
Address: 17.146.118.166

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

17.146.118.156
17.146.118.168
17.146.118.166

答え1

 grep ^Address my_file | grep -v "#" | awk '{print $2}'

答え2

次のように使用できますawk

 awk 'BEGIN {firstName=0;} /Name/ {firstName=1;} /Address/ {if(firstName) {print $NF}; firstName=0;}' <file>

答え3

perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;'

複数行の正規表現を使用して、名前の直前にある「アドレス:」の後の「数字と点」を一致させます(.*?欲張りではありません)。

読み取るマジックファイルハンドル<>- STDINまたは指定されたファイルを読み込みます。

perl -0777 -e 'print join "\n", <> =~ m/Name.*?Address:\s*([\d.]+)/gms;' somefile 

または、レコード区切り文字を「name」に設定します。

perl -lne '$/="Name:"; /Address: ([\d\.]+)/ && print $1'

欠落しているため、g各「レコード」の最初の時間だけが一致します。

関連情報