「第4回春爛漫シェル芸人撩乱勉強会&第22回勝手に新歓定例会」に参加して来ました!その時のメモやらなにやらをここに。

### 概要 会長さんからシェルの問題が出題され、それをみんなで黙々(?)と解いていくような形式でした。
初心者には玄人のフォローが着くとのことでしたが、ちょっと頑張って一般枠に。
(初参加だったし、初心者ですって言っても良かったのかもしれない)

### やったことなど
#### ※実機環境
  • Windows7 + 自作コマンド環境(Batlibrary)
  • FreeBSD 8.3 (Windows7 上のVMWare Player で稼働。ターミナルにはteratermを使用し、sshで接続)
    • 実のところX Window System(漢は黙ってtwm)でやりたかったんだけども、セットアップが間に合わず。
#### 問① 肩慣らし ```sh cat 2.html | sed 's/index\.cgi//g' ```説明は割愛。

#### 問② urlの抜き出し https://twitter.com/kunst1080/status/322948178238373888 ```sh cat 1.html | sed 's/href=/\ /g' | sed 's/>//g' | sed 's/\"//g' | sed 's/<\/a//g' | grep http ```少し間違っていた。この解き方では2行目の右端がおかしくなる。
正しくは ```sh cat 1.html | sed 's/href=/\ /g' | sed 's/>//g' | sed 's/\"/\ /g' | sed 's/<\/a/\ /g' | grep http ```ちなみに、awkを使ったら一撃で書ける。 ```sh awk -F\" '/http/{print $2}' 1.html ```
#### 問③ HTMLの整形 https://twitter.com/kunst1080/status/322951117359169537 ```sh cat 3.html \ | sed 's///g' \ | grep -v "^$" \ | sed 's/ //g' ```結構間違えていた。1行にが2回出てくるし。
正しくは下記 ```sh cat 3.html \ | gsed 's;;\n;g' \ | gsed 's;;\t\t;g' ```gsed強いわぁ・・・

#### 問④ Yahooトピックスの抽出 https://twitter.com/kunst1080/status/322954715539324928 ```sh cat yahoo.html|sed 's//\ /g' | sed 's/<\/td>/<\/td>\ /g' | grep '' | grep "・" | awk -F\> '{print $3}' | sed 's/<\/a//g' ```
#### 問⑤ 数値参照の変換 pkg_add -r nkf してる間に終了orz
一応、模範解答をコピペ。 ```sh cat numref| nkf --numchar-input cat numref| w3m -T text/html -dump # なんだか化ける ```
#### 問⑥ POST pkg_add -r curl
pkg_add -r wget
に非常時に時間がかかった && さっぱりできなかったorz模範解答をコピペ。 ```sh wget --post-data a=aho http://www.usptomo.com/TOMONOKAI_CMS/CGI/hoge.cgi -O - ```※-Oオプションで出力先を指定、-で標準出力を表すとのこと。

#### 問⑦ 本日の気温をワンライナーで取得 infoseek天気の「アメダスランキング」が非常に加工しやすい形をしていたので…… ```sh curl -s http://infoseek.tenki.jp/forecast/pref-16.html \ | grep -B 2 ℃ | tr -d "\n" \ | gsed "s/--/\n/g" \ | awk -F"[\"<>]" '/todouhuken/{print $9" "$21" "$29}' ```※もしかしたら、アメダスランキングではダメなのかもしれないぞ

#### 問⑧ 画像のダウンロード ※URL=http://headlines.yahoo.co.jp/hlhttps://twitter.com/kunst1080/status/322974102304460800 ```sh curl $URL | sed -e 's/http:/\ http:/g' | sed 's/jpg.*/jpg\ /g' | grep jpg | xargs -I % echo % ```短くするとこうなる
https://twitter.com/kunst1080/status/322976906544824320 ```sh curl $URL | sed 's/src=/\ src=/g' | egrep '(jpg|jpeg|png|gif)' | awk -F\" '"src="{print $2}' ```
#### 問⑨ クローリング 玄人からのツッコミで、「それ、wgetでできるよ」的な会話があって、下記の通り(模範解答ママ) ```sh wget -r http://yahoo.co.jp ```無慈悲なアレ
 
### おまけ ―― それ、cmd.exe(コマンドプロンプト)でできるよ! ※非常に残念ながら、一部しか解くことができなかった。
#### 問① 肩慣らし https://twitter.com/kunst1080/status/322946314444881922 ```dosbatch chcp 65001 for /f "usebackq tokens=*" %i in ("2.html") do @(set w=%i && echo !w:/index.cgi=/!) chcp 932 ```実行結果は以下の通り。 ``` <a href="http://my.favorite.jk/#jk">会長のブログ</a> <a href="http://index_cgi.com/?p=index.cgi">aho</a> ```※遅延環境変数の展開を有効にするため、cmd.exeは/vオプションを付けて起動すること。

#### 問④ Yahooトピックスの抽出 ダウンロードしたhtmlを解析する部分だけ。
BAT + gawk でやってみた。 ```dosbatch type yahoo.html | findstr "・" | awk "gsub(//, \"\n\", $0)" | awk -F"[<>]" "/・/{print $3}" ```実行結果は以下の通り。 ``` 早朝の震度6弱「阪神」よぎる 阪神の余震か否か割れる見解 北が義務順守なら対話 米韓 消費税還元 業界と閣僚対立 世界初の子宮移植女性が妊娠 誕生日の岩隈 ダルに投げ勝つ 小野の芸術ループ 敵将も絶賛 青木アナ 矢部の門限は朝5時 ```※BATファイルでは文字列の置換が非常に難しいこと、置換後に改行にすることがほぼ不可能のため、Windows用のgawkバイナリを使用している。横着しているとも言う。
本気でWindows内だけでやるためには、専用のBATをjscriptなどを使用して作成する必要がある。近々やりたいな。
 
### 反省点・まとめ
  • 当日、コマンドが足りず勉強会中にpkg_add -r していた。パッケージは事前に揃えてくること。
  • 交通費がかかりすぎた。往復切符を買うなり、金券ショップでチケット買うなりしよう。
    • 大阪→東京間で、新幹線は自由席で、定価で買うと、片道で13,240円もする。これは「大図書館の羊飼い 初回限定プレミアムパック」とほぼ同額である。
  • 俺妹①巻の黒猫ばりのコミュ障を発揮していたので、ね。。。もう少し交流するようにせねば。
  • 次回はLTで「それ、cmdでできるよ!」をやってみたい。
 
当日朝、震度6くらいの地震があって正直行けないかなぁ……と思っていたのですが、予想以上に早く電車が再開したため無事参加できました。さすが、地震には慣れていらっしゃる。あと、これは非常に個人的な観点からの感想なのだけれど、**チェック柄の服の人が意外と少なかった**。