#hbstudy #38でシェルスクリプト大会してきたよ!

シェアする

  • このエントリーをはてなブックマークに追加

というわけで 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"

まとめ

さくっとできることはシェルでやろう。 プログラム書いたほうがはやいことは、書いて解決しよう(´・ω・`)

ads

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

ads