0

次のような出力があります。

FA-7E 0 500009730007C118
FA-8E 0 500009730007C11C
FA-7F 0 500009730007C158
FA-10F 0 500009730007C164

私はそれを次のように翻訳したいと思います:

FA-7E 0 50:00:09:73:00:07:C1:18
FA-8E 0 50:00:09:73:00:07:C1:1C
FA-7F 0 50:00:09:73:00:07:C1:58
FA-10F 0 50:00:09:73:00:07:C1:64

お知らせ下さい。

4

4 に答える 4

2
$ awk '{gsub(/../,"&:",$NF);sub(/:$/,"")}1' file
FA-7E 0 50:00:09:73:00:07:C1:18
FA-8E 0 50:00:09:73:00:07:C1:1C
FA-7F 0 50:00:09:73:00:07:C1:58
于 2013-03-04T11:15:37.093 に答える
1

セッド ソリューション:

sed -e 's/\([0-9A-F]\{2\}\)/\1:/g' -e 's/:\([- ]\|$\)/\1/g'

最初の置換は : を追加します: 16 進数の各ペアの後に、2 番目の置換は最初の列と行末から余分なコロンを削除します。

于 2013-03-04T11:19:25.787 に答える
0

Perlのバリエーション:

perl -pe 's/\w\w(?=\w+$)/$&:/g' file
于 2013-03-04T11:53:22.510 に答える
0

最高ではありませんが、機能します:

perl -lane 'push @a,$F[2]=~/../g;$F[2]=join ":",@a;undef @a;print "@F"' your_file
于 2013-03-04T13:36:53.517 に答える