運用でよく使うperlテクニック

More than 1 year has passed since last update.


はじめに

運用でログを調査したりデータを整形したりするときに使うperlのtipsです。


ワンライナーTSVを扱う

perl -F'\t' -nale 'print "$F[0]\t$F[1]"' input.tsv


tsvからsqlファイルを生成する


create_sql.pl

#!/usr/bin/perl

while(<>) {
chomp;
@c=split /\t/;
print <<"EOS"
select val_1
||chr(9)||val_2
from table_a
where col_a=$c[1]
and col_b=$c[2]
/
EOS
}


コマンド実行例

# ./create_sql.pl input.tsv > output.sql


2つのファイルを結合する


merge.pl

#!/usr/bin/perl

# 第2引数のファイルをハッシュに詰める
%hash;
open(IN,"$ARGV[1]");
while(<IN>) {
chomp;
@c=split /\t/;
$key=$c[0]."_".$c[1]; # キーとなる列をアンスコでつなげてハッシュに入れる
$hash{$key}=$_;
}
close(IN);

# 第1引数のファイルを第2引数のファイル内容を詰めたハッシュと突合して出力
open(IN2,"$ARGV[0]");
while(<IN2>) {
chomp;
@c=split /\t/;
$key=$c[3]."_".$c[5]; # キーとなる列をアンスコでつなげてハッシュに入れる
print $_;
if (exists($hash{$key})){
print "\t";
print $hash{$key};
}
print "\n";
}
close(IN2);