LoginSignup
3
1

More than 5 years have passed since last update.

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

Posted at

はじめに

運用でログを調査したりデータを整形したりするときに使う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);
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1