LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 714|回复: 5

如何取指定长度或指定界限内的字符串

[复制链接]
发表于 2003-9-5 09:30:04 | 显示全部楼层 |阅读模式
Shell下,如何取指定界限内的字符串。
例如:
Unicast reply from 192.168.0.200 [0:e0:4c:5:c5:70] 0.668ms
Unicast reply from 192.168.0.10 [20:e0:4c:65:c5:70] 0.668ms
如何取上面[]中的字符串并保存到变量MAC中。

谢谢
发表于 2003-9-5 14:11:19 | 显示全部楼层
$MAC=$(awk '{print $5}' urfile|tr -d '['|tr -d ']')
$echo $MAC
0:e0:4c:5:c5:70
20:e0:4c:65:c5:70
 楼主| 发表于 2003-9-5 15:25:27 | 显示全部楼层
thanks Javalee
I use arping to get another pc nic's mac.
the following lines

ARPING 192.168.0.252 from 192.168.0.200 eth0
Unicast reply from 192.168.0.252 [00:40:63:CA:C89]  0.762ms
Sent 1 probes (1 broadcast(s))
Received 1 response(s)

but when i use your script i get the following result:
eth0 00:40:63:CA:C89 broadcast(s))

How can i get the correct Result:
00:40:63:CA:C89

thanks.
 楼主| 发表于 2003-9-5 15:32:25 | 显示全部楼层
谢谢Javalee

刚才没进中文系统。
我是这样做的,在LINUX下用arping -c 1 192.168.0.252得到192.168.0.252的回应,就是上面的数据。
arping -c 192.168.0.252 > mac

然后再用您的那个语句做,但得到结果不是我想要的,您可以看上面的结果,如何改成正确的?
我对AWK不熟悉。

谢谢指教。
发表于 2003-9-5 15:35:40 | 显示全部楼层
$mac=$(cat tmp13|grep "\["|awk '{print $5}'|tr -d '['|tr -d ']')
$echo $mac
00:40:63:CA:C89
你可以把arping的输出过滤一下,再用grep查找关键词....
 楼主| 发表于 2003-9-5 15:48:36 | 显示全部楼层
thanks for Javalee.
I get the correct result.

thanks.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表