Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

odコマンドで一行でだす

odコマンドはデフォだと、行番号まで出てきて何かしら細工をしたい場合使いづらいです。
今回は、これを一行で出す方法。

実際のところ

$ echo 123 | od -An -v
           031061  005063                                                

16進数は"x"

$ echo 123 | od -An -v -tx1
           31  32  33  0a           

$ echo 123 | od -An -v -tx2
             3231    0a33                                     

10進数は"u"

$ echo 123 | od -An -v -tu1
           49  50  51  10                                                

$ echo 123 | od -An -v -tu2
            12849    2611                                                

末尾の改行がいらないなら、printfかechoのオプションつきで。

$ printf "123" | od -An -v -tu1 | tr -d " "
495051

故郷の村を人質に取られてシェルのまま計算しないといけない場合

$ expr `printf "123" | od -An -v -tu1 | tr -d " " ` + 1
495052

$ expr `printf "123" | od -An -v -tu1 | tr -d " " ` \* 2
990102

単純に数値を出したいだけならprintfが楽

結果を16進数にするなら、結局printfが一等楽

$ printf "%x\n" 990102
f1b96

参考もと

hydrocul.github.io