Niigata.pm
Niigata.pmへ行ってきた
tech talk #3
2014/12/13(土)2年ぶりにNDSと共催でniigata.pm tech talk#3,NDS39が開催されました。今は出稼ぎ状態なので朝、東京から長岡に新幹線で出発しました。国境のトンネルを抜けるとそこは雪国だった。近年に無い大雪(きっと記録に残る大雪でしょう)お昼前に長岡に付いたので、お昼を食べるため久しぶりの長岡なので燕背脂系太麺の安福亭にいってきました。旨かった〜 皆さんも1度食べてください。やっぱチャッチャ系ラーメンは美味い。。。
内容
- Dockerを使った Perl アプリケーション開発
- Niigata.pm tech talk を開催しました #niigatapm
- OWINについて #niigatapm #nds39 で発表してきました#aspnetjp
- JSON Web Tokenについて
- 私を育ててくれたN個のCPANモジュール達
- Niigata .pm tech talk に参加してきました #niigatapm #nds39
情報
- YAPC::Asia Tokyoが今回で最後らしい!
- いかなくては
tech talk #2
夏だ!Perlだ!データ処理だ!
1行野郎(One-Liner)
「perlでデータ処理」をテーマにネタを探しているとOne-Linerでテキストデータの変換が手ごろで、たまに使うのでOne-Linerの紹介をする。One-Linerはプロンプトから1行でパラメータを入力してコマンド(perl)に仕事をしてもらいます。
URLをデコードする
アクセスログ(log.txt)中のURLエンコードされている文字列をデコードする
perl -ple 's/%([0-9A-Fa-f][0-9A-Fa-f])/pack(q(H2),$1)/eg;' /tmp/log.txt>/tmp/log2.txt
[log.txt] memo 2012/07/04 14:36:35 210.196.92.162 http://www.google.co.jp/url?sa=t&rct=j&q=%E7%84%A1%E7%B2%BE%E3%83%BB%E7%9F%AD%E6%B0%97%E3%83%BB%E5%82%B2%E6%85%A2&source=web&cd=17&ved=0CG0QFjAGOAo&url=http%3A%2F%2Fpark15.wakwak.com%2F~k-lovely%2Fcgi-bin%2Fwiki%2Fwiki.cgi%3Fpage%3Dmemo&ei=TtbzT6aWDMHdmAX3q_iYBQ&usg=AFQjCNGYnLVF6gyguAh65nIoCI95U6VRGQ Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Niigata%2Epm 2012/07/04 14:36:47 210.196.92.162 http://park15.wakwak.com/~k-lovely/cgi-bin/wiki/wiki.cgi?page=memo Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Niigata%2Epm 2012/07/04 14:37:22 125.200.79.43 http://park15.wakwak.com/~k-lovely/cgi-bin/wiki/wiki.cgi?page=JSON Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
[log2.txt] memo 2012/07/04 14:36:35 210.196.92.162 http://www.google.co.jp/url?sa=t&rct=j&q=無精・短気・傲慢&source=web&cd=17&ved=0CG0QFjAGOAo&url=http://park15.wakwak.com/~k-lovely/cgi-bin/wiki/wiki.cgi?page=memo&ei=TtbzT6aWDMHdmAX3q_iYBQ&usg=AFQjCNGYnLVF6gyguAh65nIoCI95U6VRGQ Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Niigata.pm 2012/07/04 14:36:47 210.196.92.162 http://park15.wakwak.com/~k-lovely/cgi-bin/wiki/wiki.cgi?page=memo Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) Niigata.pm 2012/07/04 14:37:22 125.200.79.43 http://park15.wakwak.com/~k-lovely/cgi-bin/wiki/wiki.cgi?page=JSON Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
- エラーログをデコードする
tail -f /var/log/httpd/error_log|perl -ple 's/\\x(..)/pack("C",hex($1))/ge'
特定のフィールドでソートする
ブランクで区切られている4番目の項目でソートする
perl -e 'print sort{(split(/ /,$a))[3] <=> (split(/ /,$b))[3]} <>' log.txt
漢字コードを変換する
utf8で書かれているテキストをeucに変換する。
perl -i.bak -MJcode -ple 'Jcode::convert(\$_,"euc","utf8")' log2.txt [file2 file3 ... ]
スイッチ(1行野郎の為のオプションスイッチ)
- -e commandline
- 1行野郎の必須オプション コマンドライン(スクリプト)が実行される
- -n
- スクリプトのまわりをループで囲んでくれる
LINE: while(<>){ スクリプト #-eで与えたスクリプトがここ置かれる }
- -p
- -nのprint付き ループの最後のprintしてくれる
LINE: while(<>){ スクリプト #-eで与えたスクリプトがここ置かれる print; }
- -a
- -n,-pと一緒に使うことでループの先頭でsplitが実行され、@F配列に各要素がセットされる
LINE: while(<>){ @F = split(' '); スクリプト #-eで与えたスクリプトがここ置かれる }
- -l
- 自動的に行末処理を行う。ループの先頭でchompを行いprintの最後に$\出力する
- -i
- 処理結果を元のファイルに書き戻す。入力ファイルを別名にリネームしprintの出力先を元のファイルにする。-i.bakと拡張子を指定すれば元のファイルは.bakの拡張子が付加されバックアップファイルになる
- -Mmodule
- スクリプトを実行する前にuse moduleを実行する。-Mのおかげで1行野郎は複雑な処理も1行で書けてしまう
- 2016/04/07 追加 マルチラインの置き換え
- xmlの特定のタグの中にタグを追加する(もし追加するタグがあったら書き換える)
perl -i.back -0pe 's{(<PropertyGroup Condition.*?(?:Debug|Release).*?)(\s*<PlatformTarget>[^<]*</PlatformTarget>)*(\s*</PropertyGroup>)}{$1\r\n <PlatformTarget>x86</PlatformTarget>$3}gms' */*/*vbproj
- -0 セパレータの指定
- m マルチライン
- s .を改行とマッチさせる
□□□□ One-Liner google serch □□□□
- http://perl-users.jp/articles/advent-calendar/2008/22.html
- http://sonic64.com/2003-06-04.html
- http://www.webhtm.net/perl/oneliner/oneliner_perloption.htm
- http://www.redout.net/data/oneliner.html
- http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/oneline.html
- http://blog.livedoor.jp/dankogai/archives/51026593.html
- http://blog.livedoor.jp/dankogai/archives/51067247.html
決起大会
ATNDで参加するためにTwitterを始めました。
新潟でperlの仕事がした〜い!!!
- 無精・短気・傲慢