たいちょーの雑記

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

シェル芸160ノック2

9月末ごろに発売されたシェル芸本。手を付けられていなかったのですがようやく落ち着いた感があるので少しずつ解答して行こうと思います。サクッと行きます。

前回はここ

gihyo.jp

問題6

$ echo {{{{_,}_,}_,}_,}'*' | fmt -1 | tr _ ' '
    *
   *
  *
 *
*

問題7

$ cat qdata/7/kakeibo.txt | ocs  "BEGIN{var s=0M;}i(F[1])>=20191000{s+=(F[2][0]=='*' ? 1.08M : 1.10M)*decimal.Parse(F[3])}i(F[1])<20191000{s+=1.08M*decimal.Parse(F[3])}END{println((int)s)}"
53612

github.com

awkでいいな…

問題8

$ cat qdata/8/access.log | teip -og "\[.+\]" -- awk -F: '{print $0, $2>=12 ? "午後" : "午前"}' | sel -- -1 | sort | uniq -c | sort -rn
      3 午後
      2 午前

問題9

$ dateutils.dseq --format "%d/%b/%Y %H:" 2016-12-24T21:00:00 1h 2016-12-25T03:00:00 | grep -f- ./qdata/9/log_range.log
192.168.77.248 - - [24/Dec/2016 21:12:20] "GET / HTTP/1.0" 200 4294
192.168.152.143 - - [24/Dec/2016 22:06:19] "GET / HTTP/1.0" 200 7255
192.168.6.132 - - [24/Dec/2016 23:00:42] "GET / HTTP/1.0" 200 4298
192.168.222.3 - - [25/Dec/2016 00:03:23] "GET / HTTP/1.0" 200 8547
192.168.101.95 - - [25/Dec/2016 01:01:40] "GET / HTTP/1.0" 200 8488
192.168.141.18 - - [25/Dec/2016 02:15:52] "GET / HTTP/1.0" 200 4533
192.168.110.169 - - [25/Dec/2016 03:06:54] "GET / HTTP/1.0" 200 3461

dseqって時間を刻みに指定できたんだなあ

問題10

$ cat qdata/10/headings.md | sd '## (.+)' '$1\n---' | sd '# (.+)' '$1\n==='
AAA
===

これはAAAです

BBB
===

これはBBBです。
楽しいですね。

CCC
---

これはCCCCです

DDD
---

これはDDDです

問題11

$ cat qdata/11/gijiroku.txt | sed -z 's/すず\n/鈴木:/g;s/さと\n/佐藤:/g;s/やま\n/山田:/g'
鈴木:あばばあばば

佐藤:あばばばばばばば!

山田:びっくりするほどユートピア!びっくりするほどユートピア!

鈴木:うひょひょひょwwwwwやまwwやまwww

佐藤:ひょおお?ひょおお???

鈴木:それでは会議を終わります

高次元の会話