タイトルの通りです。今回も大阪サテライトに参加しました。
大阪サテライト
atnd.org
問題 【問題のみ】第24回◯◯o◯裏番組シェル芸勉強会 – 上田ブログ
問題+解答例 【問題と解答】第24回◯◯o◯裏番組シェル芸勉強会 – 上田ブログ
この日の自分の tweet T.Motooka(@t_motooka)/2016年08月27日 - Twilog
シェル芸とは無関係の発言も含んでいるとは言え、149tweetsもしており、不健全な感じがします。
午前中の学び
/etc/passwd から自分の業を取る #シェル芸
— T.Motooka (@t_motooka) August 27, 2016
cat /etc/passwd | awk -v "u=$USER" -F: '$1==u'
会議中のヒマなときにたしなももの。それが #シェル芸
— T.Motooka (@t_motooka) August 27, 2016
今日の #シェル芸 で出てきたこのawkの使用例、参考になりますねー。
— T.Motooka (@t_motooka) August 27, 2016
$ echo a a b b c | tr ' ' '\n' | awk '{x[$1]++}END{for(k in x){print k,x[k]}}'
休日平日休日の並びを出すやつ。これは綺麗。
paste <(echo '\n' | cat - holidays) <(echo | cat - holidays ) <(cat holidays) | awk '$4==1 && $8==0 && $12==1 {print $1,$5,$9}'#シェル芸
— 小原 一哉 (@KoharaKazuya) August 27, 2016
これ怖い
sshのログインパスワードを危険シェル芸にする #危険 #シェル芸
— くんすとぴっかぴか音頭 (@kunst1080) August 27, 2016
Q1
日本語入力できない環境つらい
— T.Motooka (@t_motooka) August 27, 2016
cat Q1 | awk 'BEGIN{ORS=""}{for(k in a){a[k]=0}for(i=1;i<=NF;i++){a[$i]++}for(k in a){print k ":" a[k] " "}print "\n"}'#シェル芸
環境構築、しっかりやりましょう。
Q2
結局、解けなかった…orz
環境構築からやらないと… #シェル芸 pic.twitter.com/r9gF8FmmzA
— T.Motooka (@t_motooka) August 27, 2016
環境構築、しっかりやりましょう。
Q3
まわりのみんなのコードの方が簡潔でした。
Q3 awk使う場合
— T.Motooka (@t_motooka) August 27, 2016
cat Q3 | sort | awk '{if(a!=$1){print "%%"}print $0;a=$1}END{print "%%"}'#シェル芸
Q4
Excelファイルを解凍(死語らしい)してXMLを読むの、ワクワクしますよね。
Q4
— T.Motooka (@t_motooka) August 27, 2016
unzip -p Q4.xlsx xl/worksheets/sheet1.xml | sed 's/.*<c r="A1"><v>//' | sed 's/<\/v>.*//' | tail -1 | xargs#シェル芸
Q5
簡単な方だけ解けました。
Q5 難しい方やろうとして挫折した
— T.Motooka (@t_motooka) August 27, 2016
cat Q5 | sed 's/x/2/g' | bc -l#シェル芸
これは美しい。
Q5:
— 小原 一哉 (@KoharaKazuya) August 27, 2016
echo 2 | paste <(echo x =) - | cat - Q5 | bc -l#シェル芸
これ、途中の
echo 2 | paste <(echo x =) - | cat - Q5
までを実行すると、先頭に「x = 2」という代入文の行が挿入された形になります。bc
が代入文を解釈してくれるというのは初めて知りました。
Q6
日本語環境の関係でとけず。
Q7
何もtweetしてなかったようです。運営業務関係かな?
Q8
grepを重ねる発想、競プロの問題を解いているときのような感覚でした。
Q8 その1
— T.Motooka (@t_motooka) August 27, 2016
seq -w 0000000 9999999 | grep 1 | grep 2 | grep 3 | grep 4 | grep 5 | grep 6 | grep 7 > tmp#シェル芸
改良版。0から始める必要は無いですね。
seq 1000000 9999999 | grep 1 | grep 2 | grep 3 | grep 4 | grep 5 | grep 6 | grep 7 >tmp#シェル芸
— みどりごけ@達磨に意味は無い (@midokokemaru) August 27, 2016
後半は、解説を聞いてから、見よう見まねで書きました。自力じゃないです。 <(command)
がすらっと書けるようにならないといけないですね。
Q8 #シェル芸
— T.Motooka (@t_motooka) August 27, 2016
cat tmp | awk 'BEGIN{FS=""}{print $0 " " ($1*$2*$3*$4)+($5*$6*$7)}' | grep -f <(seq 1 846 | factor | awk 'NF==2{print " "$2"$"}') -
LT
しゃべりました。ヒ☆ミ☆ツ な内容が多いので、アップできてるスライドはショボいです。すみません。。
speakerdeck.com
さいごに
運営および参加の皆様、ありがとうございました!