シェルワンライナー160本ノック問題87
問題87 odの出力の復元
問題のファイルは
https://github.com/shellgei/shellgei160
からダウンロードできる。
16進数に直してxxd -p -r で復元するのだろうなとは考えついたが具体的にワンライナーを書くところまではいけなかった。od で出力したものはバイトオーダーがちょっと厄介なのを完全に忘れていた。
解答例は
cat oct.txt | awk '{$1="";print}' | xargs -n 1 | sed '1iobase=16;ibase=8;' | bc | awk '{printf "%4s\n",$0}' | tr ' ' 0 | sed -r 's/(..)(..)/\2\1/' | xxd -p -r
となる。まずオフセットを削除して2バイトごとに1つの行へ出力する。(もともとのデータは8進数で6桁、つまり2進数では16桁(2byte)であらわされるデータになっている。)そのあと16進数へ変換して0埋めをして、バイトオーダーを入れ替えたらxxdで復元する。