というわけで hbstudy #38 はシェルスクリプト芸人養成講座でした。
awk祭りという話題で持ち切りだったんですが、ぼくawkわからないので、意地でもawkなしで解く!ということでがんばりました。 今日解き直したのも含まれてます。
シェルでFizzBuzzだって解けるんだよ!
お題
回答
※エスケープとかおかしくなってるかもなので、そこは念力デバッグしてください
Q1
cut -d : -f 1 /etc/passwd
Q2
cut -d : -f 7 /etc/passwd | sort | uniq -c | sort -nr | sed 's/\/\(bash\|sh\)$/\/\1\t*/'
Q3
find etc/ 2>/dev/null | xargs grep -Hn '#!/bin/bash' 2>/dev/null | egrep "[^:]+:1:" | sed "s/:.*//" | sudo xargs perl -pi -e 's/\/bin\/bash/\/usr\/local\/bin\/bash/'
Q4
cat ages | sed 's/\([0-9]*\)[0-9]$/\10〜\19/' | sort -n |uniq -c | sed 's/\(.*\) \(.*\)/\2 \1/'
Q5
seq 1 100 | sed -E "s/^(`seq 0 15 100|tr '\n' '|'`0)$/FizzBuzz/" | sed -E "s/^(`seq 0 5 100|tr '\n' '|'`0)$/Buzz/" | sed -E "s/^(`seq 0 3 100|tr '\n' '|'`0)$/Fizz/" | tr '\n' ','
Q6
expr \( `date -d 20121027 +%s` - `date -d 19780216 +%s` \) / 86400
Q7
seq 1 10 | grep -vw -f nums
Q8
むりぽ(´・ω・`)
Q9
cat file | xargs -l -I%% bash -c "echo \"%%\" |tr ' ' '\n'|sort -n | tr '\n' ' ' ; echo"
Q10
cat teams | tr '\n' ',' | sed -E "s/,$//" | sed -E "s/^/,/" && echo && cat teams | sed -E "s/^(`cat teams | tr '\n' '|'`\0)$/\1,`cat teams | tr '\n' ','`/" | sed -E "s/,$//" | sed -E "s/,[^,]+/,/g"
まとめ
さくっとできることはシェルでやろう。 プログラム書いたほうがはやいことは、書いて解決しよう(´・ω・`)
See also
- #isucon チーム「ウー馬場ーイー222」でISUCON13本選に参加し30位になりました
- 「SRE≠インフラなんだけどもう誤解されちゃってるから、DevOps新実装としてSite Production Engineeringはいかがでしょう?」でJAWS DAYS 2022に登壇しました #jawsdays #jawsug
- #isucon チーム「シン・ウー馬場ーイー2」でISUCON12本選に進出し12位になりました
- #isucon チーム「シン・ウー馬場ーイー2」でISUCON12予選に参加し2位で予選突破しました
- 「非ITの事業会社にSREと言わずにSREを持ち込んだ」SRE NEXT 2022で登壇しました #srenext