たいちょーの雑記

ぼくが3日に一度くらい雑記をかくところ

シェル芸160ノック17

9月末に発売されたシェル芸本の続きです。いつの間にか半分終わってた

gihyo.jp

前回はこちら

xztaityozx.hatenablog.com

問題85

$ echo 🍑 🍓 |  xxd -ps | sd '0a' '' | sd '20' ' ' | fmt -1 | xargs -n1 -I@ printf "%d\n" 0x@ | numaverage | numconv -t Hexadecimal_Lower | sd 0x '' |  xxd -ps -r | awk 4
🍒

numconv -f Hexadecimal_Lowerで変換したかったけど、最上位桁消えちゃったので悲しかった

問題86

$ cat qdata/86/fractions | uni i | sed 1d | sel --remove-empty 10 11 | sed -E "$(cat qdata/86/word_to_num | awk '{print "s/"$1"|"$2"/"$3"/ig"}'|paste -sd\;)" | tr -d S | awk 'BEGIN{printf "puts "}{printf "+Rational(%d,%d)",$1,$2}' | ruby
131/72

分数で表示しないといけないとはな

問題87

$ cat qdata/87/oct.txt | head -n2 | sel 2: | fmt -1 | numconv -b 8 | xargs -n1 printf "%04x\n" | sd '(..)(..)' '$2$1' | tr -d \\n | command xxd -ps -r
秒速で10円稼ぐ秘密

問題88

$ command cat qdata/88/image_masked.bmp | convert - -compress none pnm:- | tail +4 | tac | fmt -1 | paste - - - -d ' ' | sel 3 | numconv -B 2 | sd '.+(.)$' \$1 | tr -d \\n | numconv -b2 -B16 | command xxd -p -r
Hello, 私だ。
以下は私の個人情報だ!!
絶対に漏らすなよ!!!
...

問題89

$ cat qdata/89/ctf-data | base64 -d | gunzip > o
$ ./o | command xxd -ps | grep -o .. | sed 's/^/0x/' | numconv -f Hexadecimal_Lower | awk '!/^(32|10)$/{$1-=2}4' | numconv -B 16 | tr -d \\n | command xxd -p -r
FLAG is shell-gei