ablog

不器用で落着きのない技術者のメモ

Perl

WWW::Mechanize と Web::Scraper を使って HTML からテキストを抽出して CSV を作成する Perl スクリプト

ちょっと書いてみた Perl スクリプトをメモっておく。 #!/usr/bin/env perl use strict; use warnings; use WWW::Mechanize; use Web::Scraper; use utf8; use Encode; my $mech = 'WWW::Mechanize'->new('autocheck', 1); $mech->get('http://www.ablog.co.…

ファイルをリネームする Perl ワンライナー

やりたいこと あるディレクトリ以下のファイルを別のディレクトリ以下にコピーする。 コピー元ディレクトリは階層構造。サブディレクトリがある。 コピー先ディレクトリは階層構造ではない。1つのディレクトリ以下に全ファイルを置く。 コピー元に同じ名前の…

WWW::Mechanize をインストールした

環境 $ uname -a CYGWIN_NT-5.1 ... 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin インストール手順 $ perl -MCPAN -e shell CPAN> install WWW::Mechanize Is it OK to try to connect to the Internet? [yes] 使ってみる $ perl -MWWW::Mechanize -e '…

CSV を処理する Perl ワンライナーいろいろ

CSV の列数をカウントする perl -F, -lane 'printf("%s:%d\n",$ARGV,$#F);$.>0 and close ARGV' *.csv 200911.csv: 21 200912.csv: 21 201001.csv: 21 201002.csv: 21 CSV の任意の列を頭0埋めする # ヘッダ(1行目)を削除する # 1列目、11列目の頭を12桁で…

find + xargs + Perl で任意のディレクトリ以下を再帰的に検索してファイル内の文字列を置換する

find . -type f -print0|xargs -0 perl -i.org -ple 's/foo/bar/g' カレントディレクトリ以下のファイル内の文字列 foo を bar に置換し、元のファイルは .org をファイル名の末尾につけてバックアップする。 関連 再帰的にファイル名に接頭辞をつける Perl …

CPAN の初期設定

# cat /etc/issue CentOS release 5.4 (Final) Kernel \r on an \m # uname -a Linux centos54.ablog.jp 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux # perl -MCPAN -e shell ... Policy on building prerequisites (follo…

Web::Scraper をインストールしてみた

$ uname -a CYGWIN_NT-5.1 yohei-azekatsu 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin $ perl -MCPAN -e shell > install Web::Scraper Is it OK to try to connect to the Internet? [yes] ==> Auto-install the 1 optional module(s) from CPAN? [y]…

Perl ワンライナー(-nまたは-pオプションつき)に引数を渡す方法

テストのため、hoge.log を作成する。 $ perl -le 'for(1..10){print}' > hoge.log $ cat hoge.log 1 2 3 4 5 6 7 8 9 10 以下の例では、引数のうち「hoge.log」をファイルとしてオープンして一行ずつ処理し、「1」と「2」はワンライナーの中で引数として受…

export した dump から DDL を作成する方法 with Perl ワンライナー

show=y をつけて import を実行し、DDL を生成する。 $ imp system/manager file=scott.dmp fromuser=scott touser=scott show=y log=impshow_scott.log 以下のような DDL が出力されるがこのままでは実行できない。 $ cat impshow_scott.log Import: Releas…

任意のディレクトリ配下にどのような拡張子のファイルがどれだけあるか集計する Perl ワンライナー

$ perl -MFile::Find -MFile::Basename -e 'find sub{$h{(fileparse($_,qw{\.[^\.]+$}))[2]}++ if -f},@ARGV;END{map{print "$_:$h{$_}\n"}keys %h}' . .sh:27 .pl:3 .conf:9 .rman:1 .sql:9 参考 fileparse - ファイルパスからファイル名などを取り出す 関…

メモリをがんがん消費する Perl ワンライナー

メモリ使用率監視のテストをするために、メモリをがんがん消費する Perl ワンライナーを書いてみた。 perl -e 'while(1){$i++;$h{$i}=$i}' 追記(2016/03/24): 仮想化時代はこちら perl -e '$hn=`hostname`; while(1){$i++;$h{$i}=$i . " $hn" . 'x'x4000 }'

CPU使用率を 100% にする Perl ワンライナー

$ perl -e 'while(1) {}' これも id:sh2 さんに教えていただきました。ありがとうございました。 yoheia: CPU、メモリの使用率の監視のテストのため、使用率を上げたいんだけど、スマートなやり方ないかな?誰か教えて。posted at 12:45:28sh2nd: @yoheia pe…

再帰的にファイル名に接頭辞をつける Perl ワンライナー

「特定のディレクトリ配下のファイル名に接頭辞付与かつ再帰的にこれをワンライナーで出来んか調べ中」という連絡が入った。OSはWindowsとのこと。 書いてみると意外と短く書けた。 perl -MFile::Find -e 'find sub{rename($_,"prefix_$_") if -f}, @ARGV' .…

Shibuya Perl Mongersテクニカルトーク#12 NoSQL特集 に行って来た

Shibuya.pm#12 に行って来た。本物の宮川さんを見れた!(ミーハー)。難しくてわからないところがたくさんあったけど、刺激になった。また行きたい。最近DB(Oracle)のお勉強しているので、「 NoSQL vs. NoKVS ライトニングディスカッション」が面白かった。…

表領域単位で空き領域を調べる SQL

SQL> select tablespace_name, sum(bytes)/1024/1024/1024 gb from dba_free_space group by tablespace_name; TABLESPACE_NAME GB ------------------------------ ---------- UNDOTBS1 2.66601563 SYSAUX 1.076660156 USERS 5.8731079 SYSTEM .001159668 I…

Perl ワンライナーの中でシングルクオートを使いたいとき

% perl -le 'print '" is double quote.'' こういうことをしたい場合、 % perl -le 'print q/" is double quote./' " is double quote. とすると、おk。 % perl -MO=Deparse -le 'print q/" is double quote./' BEGIN { $/ = "\n"; $\ = "\n"; } print '" is…

Oracle のデータファイルの連番の最小値と最大値を求める Perl ワンライナー

コマンド % ls|perl -MList::Util=min,max -ne '/^users([0-9]+)/ and push(@a,$1); END{printf("min:%s, max:%s\n",min(@a),max(@a))}' 実行結果 min:01, max:135

Perlワンライナーでファイル名一括置換する(2)

perl -0777 -ne "$o=$ARGV;$ARGV=~s/20090101/20091231/;rename($o,$ARGV);" * 関連 Perl ワンライナーでファイル名一括置換 - ablog

ちょっと使った Perl ワンライナーをメモッっておく

perl -ne '/^\s*([0-9:\.]{12}).*\[10000\] (start|end).*/ and push(@a,$1);if(eof){for($i=0;$i<=$#a;$i+=2){printf("%s %s %s\n",substr($ARGV,3,7),$a[$i],$a[$i+1])};@a=()}' hoge_*.log

ログから処理開始時刻と終了時刻を抽出する Perl ワンライナー

ちょっと使った zsh + Perl ワンライナーをメモっておく。 % perl -MList::Util=min,max -ne '/^\s*([0-9:\.]{12})/ and push(@a,$1);eof and printf("%s %s %s\n",substr($ARGV,3,7), min(@a),max(@a))' hoge<1-500>.log Perl ってほんと Practical。

「『Ficia』インフラとPerlにまつわるエトセトラ‎」見たかったなぁ

初 YAPC::Asia 行きたかったんだけど、仕事の都合で今年は無理だった。 特に、id:hirose31 さんのセッション気になってたんだけど、 YAPC::Asia 2009で「『Ficia』インフラとPerlにまつわるエトセトラ」というタイトルでしゃべってきました - (ひ)メモ 資料…

CSV の列順を入れ替える Perl ワンライナー

% cat <<EOF >hoge.csv A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F EOF % cat hoge.csv A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F A,B,C,D,E,F % perl -lanF',' -e 'print join(",",@F[5,0..2,4,3]);' hoge.csv F,A,B,C,E,D F,A,B,C,E,</eof>…

Perl でホスト名を取得する

OSコマンドを実行してもいいんだけど、Perlでやる方法を調べてみた。 コード perl -MSys::Hostname -le 'print hostname();' 実行結果 host01 参考 ホスト名の取得 - Perl表技集

行頭から任意の文字数を削除する Perl ワンライナー

% for i in {1..10} do perl -le 'print for 2001..2010' > $i.log done % ls 1.log 10.log 2.log 3.log 4.log 5.log 6.log 7.log 8.log 9.log % cat 1.log 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 % perl -i.org -ple 's/^.{2}//' *.log % ls 1…

データを増幅したときの Perl ワンライナー

ほんとうにただのメモ。 bash + perl ワンライナーでデータファイルを 10 倍に増幅した。 $ cp -p data.cgi data_org.cgi $ wc -l data.cgi 20763 data.cgi $ cp data.cgi data_new.cgi $ for i in {1..9} do export n=`perl -lanF',' -e '$a=$F[0] if $a<$F…

tnsnames.ora の HOST を一括置換する Perl ワンライナー

HOST を一括置換する。 perl -i.org -ple 's/HOST\s*=\s*[a-zA-Z0-9\.\-]+/HOST = 192.168.1.101/g' tnsnames.ora SERVICE_NAME を一括置換する。 perl -i.org -ple 's/SERVICE_NAME\s*=\s*[a-zA-Z0-9\.\-]+/SERVICE_NAME = testdb21/g' tnsnames.ora

テキストファイル中の最長行の文字数を求める Perl ワンライナー

解決 - MATSU’s vision Perl ワンライナーでやってみた。 $ perl -nle '$a=length if($a

変態的な Perl ワンライナー (2)

元来、プログラマというのは怠惰なヒトたちであり、少しでも自分の作業がラクになるように色々なプログラムを開発してきたわけでして。 プログラムを書くにしてもできるだけラクに(タイプ数を少なく)、ということで「Code Golf」なんてのが考え出されたのだ…

あるディレクトリ以下のファイルを再帰的に検索して文字コードを調べる Perl ワンライナー

zsh + Perl で あるディレクトリ以下のファイルを再帰的に検索して文字コードを調べるワンライナーを書いてみた。 % perl -0777 -MEncode::Guess -wne '$e=guess_encoding($_,qw/euc-jp shiftjis 7bit-jis/);print "$ARGV:".$e->name."\n" if(ref($e))' **/*…

特定のファイル名のファイルを除いて tar で固める

jpg と gif 以外のファイルを固める。 $ find www -type f|perl -ne '/jpg|gif/ or print'|xargs tar rvf www.tar tar: www/web_order/?R?s?[: Cannot stat: No such file or directory tar: ?`: Cannot stat: No such file or directory tar: orderform.htm…