awk获取IP信息

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 }' 我

我打算写一个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 }'
我想剥离更多的信息比这虽然。。。因此,我想:

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