Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ビッグエンディアンで数バイト格納されているデータをsedやawk でパースする

ビッグエンディアンで2バイト、1バイト、1バイトと格納されている文字列が来ていたとします。
こいつをリトルエンディアンで置き換えるには先頭だけ入れ替えてあげればいいですね。

$ echo AD7399AF | sed -e "s/\([1-9A-F]\{2\}\)\([1-9A-F]\{2\}\)\(.*\)/\\2\\1\\3/g"
73AD99AF

ビッグエンディアンで2バイト毎が3個……とかいう構成なら、sedで1バイト(=2文字)に切り分け、
awkのprintf フォーマットをつかってこう書いた方が楽かも……

$ echo AD7399AF51CD | sed 's/.\{2\}/& /g' | awk -F " " '{printf $2$1 $4$3 $6$5}'