概要
以前 [Python][Ruby] hex string (16 進文字列) のエンディアンをビッグエンディアンからリトルエンディアンに変更する という記事を書いたが、これと同じことを bash のワンライナーでやりたい。ただし厳密に行うのは難しいので、単純に文字列を 2 文字づつに分割して順番を逆にするという方針を取る。
方法
$ echo 1234abcd | fold -w2 | tail -r | tr -d '\n'
cdab3412
変換の流れは次の通り。
1234abcd
🔽
12
34
ab
cd
🔽
cd
ab
34
12
🔽
cdab3412
おまけ
[Python][Ruby] hex string (16 進文字列) のエンディアンをビッグエンディアンからリトルエンディアンに変更する で紹介した方法をワンライナーで実行する。
Ruby
$ echo 1234abcd | ruby -e "puts(Array(gets.chomp).pack('H*').reverse.unpack1('H*'))"
cdab3412
Python
$ echo 1234abcd | python -c "import sys; print(bytes.fromhex(sys.stdin.readline().rstrip())[::-1].hex())"
cdab3412