awk并削减了问题

时间:2013-12-04 17:59:35

标签: bash sed awk

所以我有一个文件在被阅读之前必须转换为文本,无论如何这里是我的困境。

我能做到

$convertfile filename|cut -c39,40

我会收到两封信(这是我要找的,但我也需要这样做

$convertfile filename|cut -c45--56

并获得一个MAC地址恰好在上面2个字母的同一行内,我需要在屏幕上打印那些2。

我理解awk可以帮助我这个,但我不能使用列,因为字符会不断。

比方说吧

12345:  45 45 : 12131 : XU  : MACADDRRESS1

我想打印XU MACADDRESS1并将其与/proc/net/arp

中的匹配

现在,我正在转换的文件上的mac地址不包含proc net arp中的“:”,我可以使用sed将grep的输出转储到文本文件中然后匹配它们。

无论如何,最终产品将是

XU - IP 

XU MACADDRESS1 IP

我知道这是很多工作,但非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

不确定是否完全理解了这个问题。但这可能会有所帮助:

> s='12345:  45 45 : 12131 : XU  : MACADDRRESS1'
> awk -F '[: ]+' '{print $5, $6, "IP"}' <<< "$s"
XU MACADDRRESS1 IP

答案 1 :(得分:0)

s='12345:  45 45 : 12131 : XU  : MACADDRRESS1'
MAC=$(awk '{print $9}' <<< $s)
IP=$(grep "$MAC" /proc/net/arp|awk '{print $1}')