9月末に発売されたシェル芸本の続きです。ついに100問を超えた
前回はこちら
問題98
$ csvq -f CSV -n -r ./qdata/98/ 'select case when list1.c1 not in (select * from list2) then list1.c1 else "@" end, case when list2.c1 not in (select * from list1) then list2.c1 else "@" end, case when list1.c1 in (select * from list2) then list1.c1 else "@" end from list1, list2' | sed 1d | sel -d, 0 | awk '{if($1!="@" && !a[$1]++) print $1 >> "oneside";if($2!="@" && !a[$2]++) print $2 >> "oneside";if($3!="@" && !a[$3]++) print $3 >> "common"}' $ head oneside common ==> oneside <== シュル芸 シァル芸 ==> common <== シェノ芸 シェル芸 シェレ芸 ンェル芸
問題99
# 小問1 cat qdata/99/cards.txt | ocs 'F.Skip(1).Where((v,i)=>i%2==0).Distinct().Count()==1{println(F0)}' ♣ 7 ♣ 8 ♣ 9 ♣ 11 ♣ 13 ♥ 8 ♥ 9 ♥ 10 ♥ 11 ♥ 12 ♠ 9 ♠ 10 ♠ 11 ♠ 12 ♠ 13 # 小問2 $ cat qdata/99/cards.txt | awk '($2==$4&&$4==$6&&$8==$10)||($2==$4&&$6==$8&&$8==$10)' ♣ 5 ♦ 5 ♣ 11 ♠ 11 ♥ 11 ♠ 3 ♣ 3 ♥ 3 ♣ 11 ♦ 11 ♥ 2 ♦ 2 ♠ 13 ♣ 13 ♥ 13
問題100
$ csvq -f CSV -n -r ./qdata/100/ "select * from $(echo {b..g} | fmt -1 | awk 'BEGIN{print "shiritori as a"}{print "cross join shiritori as "$1}' | paste -sd ' ')" | sed 1d | grep -Pe '(.+(.),\2){6}' | ocs -F, 'F.Skip(1).Distinct().Count()==7{println(F0)}' けんこう,うがい,いちょう,うしみつどき,きゅうけい,いんどあ,あけがた けんこう,うしみつどき,きゅうけい,いちょう,うがい,いんどあ,あけがた
重複なしの組み合わせを列挙すればよかったね
問題101
$ cat qdata/101/alphabet_connection | fmt -1 | sort | join - <(echo {a..z}|fmt -1) -a 2 -o 1.1 | awk '!/^$/{a=a","$1}/^$/{print a;a=""}END{print a}' | sd "^," '' | sed '/^$/d' | sd -- ',.*,?(.)' '-$1' | xargs a-c e-f i-l p-r u w y-z
問題102
$ hoge() {echo "hoge $*"}; hoge fuga hoge fuga
こういうことではないっぽいな…