URL 第4回春爛漫シェル芸人撩乱勉強会&第22回勝手に新歓定例会
LT中発生したカオスな絵 |
やったこと
概要的な
基本的にはいつものスタンス。出されたお題をみんなで一問一答していく形式。今回はwget,curlを交えたものが中心で、業務以外でも色々便利そうな内容でした。
当日のスライド↓
20130413シェル芸勉強会スライド
自分で出した答え
今回は何度か140字超をやってしまいTwitterに投げきれなかった分もあるので、それも踏まえてまとめときます。
- 問1
最初は肩慣らしの置換問題。sedですな。
そいや! cat 2.html | sed 's;/index\.cgi;/;g' #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
時間があったらPerlでなんて聞こえた気がしたので置き換えてみたり。。
perlにしたけどた大差ないなw cat 2.html | perl -ple 's;/index\.cgi;/;g'#usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
ただスライドの回答にもありますが、後ろのgは抜いたほうがサクッと思った通りの挙動になったようですね。
- 問2
grepだけでいけた! cat 1.html | grep 'href' | grep -o -E 'https?://[^"]+' #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
sedで形成しても良かったのかもですが、grepの正規表現でマッチ部分を抜き出してもサクッと行けました!
- 問3
強引に行く cat 3.html | perl -ple 's;^(<td);\t\t$1;g' | perl -ple 's;</td><td>;</td>\n\t\t<td>;g' #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
ここは正規表現が使いやすいperlで応戦。このくらいのHTMLなら改行は取っ払うことなくいけました。
- 問4
強引にいけたが140字以内に収まらん。。 #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
140字オーバー一発目。実際にはこんなコトしてました。
curl -s http://www.yahoo.co.jp | grep topics | perl -ple 's;</a>;\n;g' | grep '<a' | perl -ple 's;<(a|img|td|tr|table)[^>]*>;;g' | perl -ple 's;</td></tr>;\n;g' | grep -v -E '^(<|$)'
topicで絞り込み、いらなないタグをがっつり消して。。。なんてやってみたり。
HTMLの形成はやっぱまだそんなにうまくできないですな。。。
- 問5
sudo aptitude install nkf && nkf --help したら5問目解決した。。 (LinuxMintにて) #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
実際どういうことかというと、
nkf --help | grep '\-\-num'
--numchar-input Convert Unicode Character Reference
てな感じでnkfで解決できるようです。nkf万能ですな。
- 問6
curl -d "meshi=餃子食べたい" usptomo.com/TOMONOKAI_CMS/… #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
これも知ってるかどうかの問題。
wgetやcurlってmanとか見てみるとかなり色々できるんだなーってことがわかるんで、
このへんの使い方覚えておくと便利ですな。
curlはkオプションでオレオレ証明書の警告無視したりとか、uオプションでBasic認証通したりとかは普段結構やってます。
また余談ですが、こんな話も出てました。
echo "hoge" > /dev/tcp/$url/$port でポート叩けるのは初めて知ったなー。 #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
ポートを直接叩くときはtelnet使うことが多いのですが、これは結構使えるかもと思いました。
ちなみにtab 補完ではbash_complitionありでも /dev/ までしか行けないので注意
- 問7
yahoo天気からとってる人が多かったですが、私は気象庁のページからとって来ました。
とりあえずこれで東京のやつはとれるかな。 curl data.jma.go.jp/obd/stats/data… | nkf -w | grep '東京\*' | grep -o -E '[0-9]+\.[0-9]+ \]' | sed 's/ \]//g' #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
文字化けするんでnkfに食わせて地名でgrep、
更に気象庁のページだとそれぞれ数値ごとに違う記号がケツについていてくれるので抽出が結構楽でした。
- 問8
URLのリストをひっぱてきてそれをWhileに食わせてwgetかなーという事で考えたら、一発目はこんな感じ。
curl $url | grep -o -E '<img src="[^"]+"' | sed 's/<img src=//g' | while read url ; do eval $(echo wget -P /tmp/ $url) ; done #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
この時、なぜかeval使わないとうまく行かなかったけど、
実はURLのリストが"(ダブルクオート)付きのまんま渡していたのが原因、ごまかしながら回避したらevalなしで行けました。
"回避したらevalなしでいけた! curl $url | grep -o -E '<img src="[^"]+' | sed 's/<img src="//g' | while read url ; do wget -P /tmp/ $url ; done #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
ちなみにwgetは-Pオプションで保存先を指定できます。
カレントディレクトリ気にしながらやるのはちょっとやだなーと思ったのでつけといた感じです。
- 問9
9問目もやっぱ140字超えた… #usptomo
— Kei Iwasakiさん (@laugh_K) 2013年4月13日
本日2回目/(^o^)\
しかも残り時間も10分程度しかなかったため、ここは問題を緩くして実践可能そうなものをやりました。
Naverまとめトップから注目のまとめ一覧を持ってくるワンライナーを考えました。
curl -s http://matome.naver.jp/ | grep 'mdTopMTMList01ItemTtl' | perl -ple 's;</?h3[^>]*>;;g' | perl -ple 's;data-na.+;;g' | perl -ple 's;<a href="([^"]+)";URL:$1;g' | perl -ple 's;title="([^"]+)";タイトル:$1;g'
やってみるとこんな感じで取れます。
URL:http://matome.naver.jp/odai/2136488988365947801 タイトル:大ヒット量産させる映画プロデューサー川村元気の企画術 URL:http://matome.naver.jp/odai/2136591141241441201 タイトル:サッチャー元首相死去で祝宴?こんなところにも影響が URL:http://matome.naver.jp/odai/2136557341877119101 タイトル:おじさんが号泣して帰ってくる映画「シュガー・ラッシュ」 URL:http://matome.naver.jp/odai/2136575903214959201 タイトル:ほっこり感に癒される・・。どこか懐かしい、なごみの和カフェ 10選 URL:http://matome.naver.jp/odai/2136506270703513201 タイトル:新人だからこそ出社・退社時の行動で差をつける URL:http://matome.naver.jp/odai/2136585009332002401 タイトル:人の性格はどこまで遺伝子に支配されるの? URL:http://matome.naver.jp/odai/2136584599731196801 タイトル:子供向け新番組に「篠原ともえ」さん・・MCを担当=番組への意気込み語る URL:http://matome.naver.jp/odai/2136582216126259501 タイトル:中毒者続出中!「いちごチョコづくし」が美味過ぎると話題 URL:http://matome.naver.jp/odai/2136584860631656401 タイトル:壮絶すぎて泣けてくる…”デヴィ・スカルノ”という生き方 URL:http://matome.naver.jp/odai/2136385073699882601 タイトル:ビールは飲みかたで女子の強い味方になれる URL:http://matome.naver.jp/odai/2136589043838700401 タイトル:【リーガル・ハイ】10月に新シリーズ!スペシャルドラマ内で発表 URL:http://matome.naver.jp/odai/2136557232176774101 タイトル:ヘルシーなだけじゃない!「こんにゃく」に秘められた美肌成分 URL:http://matome.naver.jp/odai/2136585970534117401 タイトル:あのPSYが新曲「ジェントルマン」を初公開!! URL:http://matome.naver.jp/odai/2136518653732010401 タイトル:日本でも乗りたい!海外ディズニー・ユニバの映画系アトラクション URL:http://matome.naver.jp/odai/2136589113938766001 タイトル:4年目でついに初完封!西武・菊池雄星はやっぱり怪物だった URL:http://matome.naver.jp/odai/2136524422843603601 タイトル:【会社員】マネーの常識!?基本的な「給与明細」の読み方 URL:http://matome.naver.jp/odai/2136585906733956901 タイトル:世界初★熊の脳手術!込められた医師の感動メッセージ URL:http://matome.naver.jp/odai/2136583588029140601 タイトル:おかめ列車という絵本がシュールすぎる! URL:http://matome.naver.jp/odai/2136585990034164101 タイトル:羽交い絞めして15分触る…自社の路線で痴漢容疑の東急社員逮捕 URL:http://matome.naver.jp/odai/2136585497632955701 タイトル:俵万智も絶賛しがち!レイザーラモンRGの「言葉のテクニック」
Naverまとめの HTMLはキレイなので形成もやりやすいですね。
ただこれだと相対パス対応も再起取得も対応してないんで回答としてどうなんだよ?って感じがありますが。。
ビアバッシュ(#!/beer/bash)
ビアバッシュと言いつつLTが大半を占めましたが、シェルを使ったカレンダー画像生成の話が出たりとかして面白かったです。
次回自分も何かネタを提供できればいいかなーとも思いましたがネタがない。。
ただ、話自体は面白かったのですが、時間制限がなくてカオスな感じになってしまったのはちょっと残念かもと思いました。
次回は程よい時間のメリハリがあると色々な方の話も聞けて歓談もできて良いのかなという感じがします。
感想とか
3回目の参加ということもあり、初回に比べて大分回答率が上がって来ました。
awkはまだまだですが、sedとは大分友達になれてきた感じがします。
次回は6月に開催されるようなので、その際もぜひ参加したいなーと思います!