入力データには次の行が含まれます。
Network: 10.1.0.0/24 00001010.00000001.00000000. 00000000
Network: 10.1.1.0/24 00001010.00000001.00000001. 00000000
Network: 10.1.2.0/24 00001010.00000001.00000010. 00000000
Network: 10.1.3.0/24 00001010.00000001.00000011. 00000000
Network: 10.1.4.0/24 00001010.00000001.00000100. 00000000
Network: 10.1.5.0/24 00001010.00000001.00000101. 00000000
Network: 10.1.6.0/24 00001010.00000001.00000110. 00000000
Network: 10.1.7.0/24 00001010.00000001.00000111. 00000000
$2列の出力を得るためにawkを使いたいです。私が試したことは何も返しません。
$ ipcalc 10.1.1.0/21 /24|gawk '$1~/^Network:.+\/24[[:space:]]+/{print $2}'
grepで正規表現を使用すると正常に動作します。
$ ipcalc 10.1.1.0/21 /24|grep -E "^Network:.+\/24[[:space:]]+"
Network: 10.1.0.0/24 00001010.00000001.00000000. 00000000
Network: 10.1.1.0/24 00001010.00000001.00000001. 00000000
Network: 10.1.2.0/24 00001010.00000001.00000010. 00000000
Network: 10.1.3.0/24 00001010.00000001.00000011. 00000000
Network: 10.1.4.0/24 00001010.00000001.00000100. 00000000
Network: 10.1.5.0/24 00001010.00000001.00000101. 00000000
Network: 10.1.6.0/24 00001010.00000001.00000110. 00000000
Network: 10.1.7.0/24 00001010.00000001.00000111. 00000000
awk(gawk) 他の回避策が必要ですか?
ベストアンサー1
grepコマンドをエミュレートするには、次$1~
のように変更または$0~
削除します。
awk '/^Network:.+\/24[[:space:]]+/{print $2}'
または、より強力で移植可能にするには(POSIX awksだけでなく、すべてのawkでも動作します):
awk '($1 == "Network:") && ($2 ~ "/24$"){print $2}'
$1
コードの問題は全体の式をテストしますが、$1
最初のフィールドですNetwork:
。