パイプを介して最初のフィールドを10進数から16進数に変換する方法

パイプを介して最初のフィールドを10進数から16進数に変換する方法

次の画面出力があります。

170.170.170.0.156.96 24

パイプして次の形式に変換したい

b8:27:eb:ef:3b:4a 24

デフォルトでは、最初のフィールドは10進数から16進数に変換され、点はコロンで置き換えられます。どんな提案がありますか?

ベストアンサー1

$ cat input
170.170.170.0.156.96 24
$ perl -lane '$F[0] =~ s/(\d+)/sprintf "%02x",$1/eg; $F[0] =~ tr/./:/; print "@F"' < input
aa:aa:aa:00:9c:60 24
$ 

印刷せずに標準入力を繰り返して分割して@F最初の列($F[0])を削除し、すべての数字を対応する16進数と.to:tr変換に置き換えます。 printに含まれる新しい値@F

おすすめ記事