awk获取IP信息
我打算写一个bash脚本,从ifconfig-a中提取我想要的信息 但后来我看到了一句话:awk获取IP信息,awk,gawk,Awk,Gawk,我打算写一个bash脚本,从ifconfig-a中提取我想要的信息 但后来我看到了一句话: /sbin/ifconfig | awk -v RS="\n\n" '{ for (i=1; i<=NF; i++) if ($i == "inet" && $(i+1) ~ /^addr:/) address = substr($(i+1), 6); if (address != "127.0.0.1") printf "%s\t%s\n", $1, address }' 我
/sbin/ifconfig | awk -v RS="\n\n" '{ for (i=1; i<=NF; i++) if ($i == "inet" && $(i+1) ~ /^addr:/) address = substr($(i+1), 6); if (address != "127.0.0.1") printf "%s\t%s\n", $1, address }'
我想剥离更多的信息比这虽然。。。因此,我想:
ethX MAC-add IP Bcast Mask
。。。我怎样才能改变上述一个线性得到我的输出后 试试这个,应该可以:
ifconfig -a|awk -v RS="" '{for(i=1;i<=NF;i++){
if($i=="inet")ip=$(i+1);
else if($i=="broadcast")bcast=$(i+1);
else if($i=="ether")mac=$(i+1);
else if($i=="netmask")mask=$(i+1)}
if(ip!="127.0.0.1")print $1,mac,ip,bcast,mask}'
以下是基于Kents verson的工作版本:
ifconfig -a|awk -v RS="" '{for(i=1;i<=NF;i++){
if($i=="HWaddr") mac=$(i+1)
else if($i~/addr:[0-9]/) {split($i,a,":");ip=a[2]}
else if($i~/Mask/) {split($i,a,":");mask=a[2]}}
if(ip!="127.0.0.1")print $1,mac,ip,bcast,mask}'
eth0 00:18:71:6a:f0:45 192.168.1.30 255.255.255.0
我跳过了广播地址,因为它总是段中的最后一个IP,通常不需要。相关:@jaypal他希望将输出放在一行中。检查他引用的代码,它以单行形式打印内容。请看。ifconfig的输出取决于系统,因此这可能需要一些调整。例如eth1 addr:192.168.1。1@mbbxedh2我想如果你读我的密码你会明白的谢谢Kent。。。我意识到你的是mac上的ifconfig输出-让我有点不舒服,但我早上的眼睛发现了。。。谢谢again@mbbxedh2我没有苹果。我的ifconfig来自:nettools 2.10-alpha
ifconfig -a|awk -v RS="" '{for(i=1;i<=NF;i++){
if($i=="HWaddr") mac=$(i+1)
else if($i~/addr:[0-9]/) {split($i,a,":");ip=a[2]}
else if($i~/Mask/) {split($i,a,":");mask=a[2]}}
if(ip!="127.0.0.1")print $1,mac,ip,bcast,mask}'
eth0 00:18:71:6a:f0:45 192.168.1.30 255.255.255.0