我正在尝试从openwrt中的/tmp/dhcp.lease解析dhcp.lease文件。
root@OpenWrt:/# cat /tmp/dhcp.leases
1568953482 70:B3:D5:14:D0:31 192.168.3.51 device1 01:70:B3:D5:14:D0:31
2867821468 38:B8:EB:10:00:22 192.168.5.93 device2 01:38:B8:EB:10:00:22
8984532872 00:01:0A:33:11:33 192.168.5.44 CISCOee 01:00:01:0A:33:11:33
Where, 2nd column - MAC address , 3rd column - IP address and 4th column- Name
我想运行一个shell脚本来解析此dhcp.lease列表中的
No of devices
,MAC address
,IP address
和Device Name
。样本输出:
如果
3 device
文件中存在dhpcp.lease
列表,我想像打印输出:
3
70:B3:D5:14:D0:31/192.168.3.51/device1
38:B8:EB:10:00:22/192.168.5.93/device2
00:01:0A:33:11:33/192.168.5.44/CISCOee
和
如果未找到设备列表,则应返回
0
我可以进行简单的文件内容迭代吗?还是像sed / awk这样的快速方法?任何示例代码?
最佳答案
awk
命令可能会帮助您。
$ awk -v OFS='\n' '$2 ~ /[0-9A-Z]:/{n=n+1;a[n]=$2"/"$3"/"$4} END{print n==""?0:n; for(i in a)print a[i]}' /tmp/dhcp.leases
简要说明,
打印
$2
与正则表达式[0-9A-Z]:
匹配的行将匹配计数保存到
n
,还将$2/$3/$3
保存到数组a
最后输出匹配的案例
n
的计数和数组a
中的值关于linux - 如何使用 shell 程序脚本从dhcp.lease文件中提取IP地址,MAC地址和名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45430362/