たいちょーの雑記

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

シェル芸160ノック7

9月末に発売されたシェル芸本の続きです。正規表現めちゃめちゃに難しい

gihyo.jp

前回はこちら

xztaityozx.hatenablog.com

問題31

$ cat qdata/31/iampen.txt | perl -pe "s{(?<=<strong>)([^<]+)}{\U\$1}"
This is <strong>A PEN</strong>. I am a pen.
<pre>Are you pen?</pre> <strong>YES</strong>, I am.

問題32

$ cat qdata/32/kaibun.txt | ocs 'F0==string.Join("",F0.Reverse()){println(F0)}'
たけやぶやけた
らくまのまくら
くまをまく
わたしまけましたわ
まさかさかさま

問題33

$ cat qdata/33/kaibun | grep -o . | sel 1 1 | teip -f2 tac | awk 'BEGIN{s=1}{s=s&&$1==$2}END{if(s)print "回文"}'
回文
$ cat qdata/33/not_kaibun | grep -o . | sel 1 1 | teip -f2 tac | awk 'BEGIN{s=1}{s=s&&$1==$2}END{if(s)print "回文"}'

問題34

$ cat qdata/34/furigana.txt | sel 2 1 | sed -E 's@^([^ぁ-ん]+)([ぁ-ん]*)? (.+)\2@\1(\3)\2@g'
山田(やまだ)
頑張(がんば)る
爆発(ばくはつ)する
激(はげ)しい

問題35

$ cat qdata/35/speech.txt | grep -oPe "^.*?\p{Katakana}{4}(?=\p{Katakana})" | awk '{print length, $0}'
25 21世紀に入ってからのIT業界を中心としたパラダイ
4 ジャスト
45 個人間であらゆるアセットをシェアするビジネスが注目を浴びており、共有経済、いわゆるシェアリ
22 顧客体験の高品質化、満足度、いわゆるサティス

問題36

$ cat qdata/36/message.txt | sed 's/)(/)\n(/g' | sd '\(' 'a' | sd '\)' 'b' | ocs "F0.Count(x => x == 'a')==F0.Count(x => x == 'b'){print(F0.Replace(\"a\",\"\").Replace(\"b\",\"\"))}"
いんしゅ

ocsのパーサーバグってて、文字列内にカッコがあると死ぬのでa,bにReplaceしました…。なおします…。