2013-09-29 10 views
0

我有一個MAC地址列表,我需要添加一個「:」每2個字符。MAC地址字符之間添加符號

我的意思是,如果我有這樣的:

23396 - FFFF00400001 - Lantastic 
23397 - FFFF01E00004 - Lantastic 
23379 - 0C000C0000 - ISL-Frame 
23054 - F8D756 - Simm Tronic Limited 
23055 - F8D7BF - REV Ritter GmbH 

我需要解析有這樣的:

23396 - FF:FF:00:40:00:01 - Lantastic 
23397 - FF:FF:01:E0:00:04 - Lantastic 
23379 - 0C:00:0C:00:00 - ISL-Frame 
23054 - F8:D7:56 - Simm Tronic Limited 
23055 - F8:D7:BF - REV Ritter GmbH 

這是可能的嗎?謝謝:)

回答

1

您可以使用其替換命令:

perl -lane '$F[2] =~ s/(..)(?!$)/$1:/g; print qq|@F|' infile 

它產生:

23396 - FF:FF:00:40:00:01 - Lantastic 
23397 - FF:FF:01:E0:00:04 - Lantastic 
23379 - 0C:00:0C:00:00 - ISL-Frame 
23054 - F8:D7:56 - Simm Tronic Limited 
23055 - F8:D7:BF - REV Ritter GmbH 
2

不完全是短暫的,但工作原理:

awk '{n=split($3,a,"");s="";for (i=1;i<=n-2;i+=2) s=s sprintf("%s%s:",a[i],a[i+1]);s=s a[n-1]a[n];$3=s}1' file 
23396 - FF:FF:00:40:00:01 - Lantastic 
23397 - FF:FF:01:E0:00:04 - Lantastic 
23379 - 0C:00:0C:00:00 - ISL-Frame 
23054 - F8:D7:56 - Simm Tronic Limited 
23055 - F8:D7:BF - REV Ritter GmbH 
3
$ awk '{gsub(/../,":&",$3);sub(/:/,"")}1' file 
23396 - FF:FF:00:40:00:01 - Lantastic 
23397 - FF:FF:01:E0:00:04 - Lantastic 
23379 - 0C:00:0C:00:00 - ISL-Frame 
23054 - F8:D7:56 - Simm Tronic Limited 
23055 - F8:D7:BF - REV Ritter GmbH