我有,我想拉主機和IP信息僅如果IP存在於第4欄。例如文本文件:打印僅當字段不爲空
cat hostlist.txt
Server One 255.255.255.255 123.123.123.123
Server Two 255.255.255.255
Server Three 255.255.255.255 123.123.123.123
在這種情況下,我不僅會希望將Server One和Three看作Server Two在第四列中沒有數據。
我有,我想拉主機和IP信息僅如果IP存在於第4欄。例如文本文件:打印僅當字段不爲空
cat hostlist.txt
Server One 255.255.255.255 123.123.123.123
Server Two 255.255.255.255
Server Three 255.255.255.255 123.123.123.123
在這種情況下,我不僅會希望將Server One和Three看作Server Two在第四列中沒有數據。
AWK方法:
awk 'NF>=4 && $4~/^([0-9]{1,3}\.){3}[0-9]{1,3}$/' hostlist.txt
輸出:
Server One 255.255.255.255 123.123.123.123
Server Three 255.255.255.255 123.123.123.123
NF>=4
- 確保一個記錄具有至少4個字段
$4~/^([0-9]{1,3}\.){3}[0-9]{1,3}$/
- 確保第4個字段包含IPv4地址(以最簡單的形式。真正的IPv4驗證需要額外的條件)
如果可以用線,其中字段4具有價值無法打印0
住,可以簡化到
$ awk '$4' hostlists.txt
Server One 255.255.255.255 123.123.123.123
Server Three 255.255.255.255 123.123.123.123
這在功能上等同於{if ($4) print $0;}
,但減少到只有一個圖案和使用的默認操作print $0
。
請將您希望的輸出樣本輸入添加到您的問題中。 – Cyrus