th0x0472.log

アクセスカウンタ

zoom RSS 第23回梅雨でモワッとしたシェル芸勉強会に参加しました

<<   作成日時 : 2016/06/18 22:42   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

もの凄く久しぶりの勉強会参加でした。シェル芸勉強会は相変わらずすごい人がたくさんでした。

問題と模範解答がこちらで公開されています。

今回の問題と回答を見てると、awk強いというのを再認識しました。さらに、awkに渡す前にsedで一手間かけてやると、awkでやることが大分ラクになりそうだな〜と感じました。
sedできるようになりたい。

BOM付きファイルの件、fileコマンドでもBOM付きであることを警告してくれます。


$ file land*
landing.csv: UTF-8 Unicode text
landing_no_nkf.csv: UTF-8 Unicode (with BOM) text


iconvだとBOM取り除くことは出来ないみたいですね。nkfは偉大です。


ついでに過去問にチャレンジしてみたので、書いておきます。

第21回の Q3「2016年の日曜日を全て列挙してください。」を、dateコマンドを使わずに解いてみます。


$ for M in {1..12}; do ncal -h $M 2016 | grep '^Su' | grep -o '[0-9]*' | xargs -n 1 -I@ printf "2016/%02d/%02d\n" $M @; done
2016/01/03
2016/01/10
-- snip --
2016/12/18
2016/12/25


こんな感じになりました。awk も使わずにいけました。なお、LANG=Cです。

ざっと解説します。

最初 calコマンドでやろうとしたのですが、manを眺めてncalコマンドを知り、試してみたところ次のように出力してくれるので採用。-hオプションは実行日をハイライト表示するのを抑止します。


$ ncal -h
    June 2016
Su     5 12 19 26
Mo     6 13 20 27
Tu     7 14 21 28
We  1  8 15 22 29
Th  2  9 16 23 30
Fr  3 10 17 24
Sa  4 11 18 25


これを2016年の1月から12月分まで for で回しています。で、その中で各月のncalの出力から日曜日(^Su の行)を取り出し、さらに日付だけを取り出し(grep -o '[0-9]*')、xargsで日付1つごとにprintf で整形して出力してます。

だから何だと言われると何も返せませんが、やってみたので書きました。


シェルプログラミング実用テクニック
技術評論社
2015-05-15
上田隆一

amazon.co.jpで買う
Amazonアソシエイト by シェルプログラミング実用テクニック の詳しい情報を見る / ウェブリブログ商品ポータル


テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
第23回梅雨でモワッとしたシェル芸勉強会に参加しました th0x0472.log/BIGLOBEウェブリブログ
文字サイズ:       閉じる