シェルスクリプト - 16進macアドレスから1を引いてコロンを追加します。

シェルスクリプト - 16進macアドレスから1を引いてコロンを追加します。
  1. 私のMacアドレスは'C4:B9:83:7F:FF:AC'あります

  2. C4B9837FFFAC16進値から1を引いて次のようにしたいと思います。C4B9837FFFAB

  3. その後、再びコロンを追加してコロン形式にしたいと思います。C4:B9:83:7F:FF:AB

最初の2つのステップを実行するいくつかの解決策が見つかりました。

#!/bin/sh
mac="C4:B9:83:7F:FF:AC"
machex=$( echo "$mac" | tr -d ':' ) # to remove colons
macdec=$( printf "%d\n" 0xC4B9837FFFAC ) # to convert to decimal
macdec1=$( expr $macdec - 1 ) # to subtract one 
machex1=$( printf "%x\n" $maclandec ) # to convert to hex again 
echo "$machex1" 

これは出力されますC4B9837FFFAB

これを達成するためにコロンをどのように追加できますかC4:B9:83:7F:FF:AB

別の方法がありますか?

ベストアンサー1

使用sed:

machex2=$(echo $machex1 | sed 's/\(..\)/\1:/g;s/:$//' )

おすすめ記事