我想把ip地址和mac地址作为linux终端的输出.
我不想要ip地址之前的'addr‘。mac-地址必须以以下形式显示:000C29DDED7C (没有“:”,并且全部以大写字母表示)
我试过这个:
echo "ip-address: `/sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3` mac-address: `/sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' | tr 'a-z' 'A-Z'`"给我:
ip-address: addr:192.168.8.141 mac-address: 00 0C 29 AC 3C 02发布于 2013-11-20 14:33:52
您可以在两个位置添加sed,删除"addr:“和MAC地址之间的空格。
下面是整个命令
echo "ip-address: `/sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | sed 's/addr://g' |cut -d' ' -f3` mac-address: `/sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' |tr 'a-z' 'A-Z'|sed 's/ //g'`"此命令的输出为
ip-address: 10.137.108.181 mac-address: AC162D72A875发布于 2013-11-20 14:21:40
使用egrep获取ips地址:
ifconfig|egrep -o "([0-9]+\.){3}[0-9]+"获取没有子网掩码、没有"addr:“的ips地址:
ifconfig|egrep -o "addr:([0-9]+\.){3}[0-9]+"|sed "s/addr://g"获取mac地址:
ifconfig|egrep -o "HWaddr [A-Za-z0-9:]+"|sed "s/HWaddr\ //"您可以将每个命令的输出捕获到一个变量中,以便按需要打印:
interfaceNum=1
ip=$(/sbin/ifconfig|egrep -o "addr:([0-9]+\.){3}[0-9]+"|sed -n "s/addr://g;${interfaceNum}p")
mac=$(/sbin/ifconfig|egrep -o "HWaddr [A-Za-z0-9:]+"|sed -n "s/HWaddr\ //g;${interfaceNum}p")
echo "ip=$ip, mac=$mac"发布于 2013-11-20 14:23:42
也可以使用sed : echo“ip-地址:/sbin/ifconfig | head -2 | grep 'inet ' | tr -s ' ' | cut -d' ' -f3 mac-地址:/sbin/ifconfig | head -1 | tr -s ' ' | cut -d' ' -f5 | tr ':' ' ' | tr 'a-z' 'A-Z'”_ sed -e 's/addr://g‘
https://stackoverflow.com/questions/20098214
复制相似问题