Perl&Grep
perlを使ってgrepコマンドを実現できます。
カレントフォルダ配下のjavaファイルに対して、検索ワード"for"を検索します。
find ./ -name "*.java" -type f -print | xargs perl -wnl -e '/for/ and print;'
フィールド処理:列の入れ替え
フィールド処理が得意なコマンドにAWKがあります。
ex. 二列目だけを取り出す。
awk -F"," '{print $2}'
とはいえ、perlでやってみたらどうでしょー?
ex. 二列目だけを取り出す。
perl -wnla -F',' -e '($first, $second)=@F; print "$second";' input.csv
2バイト文字を含む行を削除する
perl -p -i.bak -e 's/^.*[^\x01-\x7E].*\n//g' any.txt
行番号を振る
perl -nle 'print "$.:$_"' any.txt
Replace
perl -pi -e 's/before_replace/after_replace/g' replace.txt
chk_inout.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 my $line;
6 my $outfile;
7 my $infile;
8 my @lines;
9 my @filelist = glob("*.param");
10 my %out_hash;
11
12 foreach(@filelist){
13
14 $outfile = $_;
15
16 open OUT, "<$outfile";
17
18 @lines = <OUT>;
19
20 foreach $line(@lines){
21
22 if ($line =~ /out=(.+$)/){
23 $out_hash{$1}= $outfile;
24 }
25 }
26 close OUT;
27 }
28
29 foreach(@filelist){
30
31 $infile = $_;
32
33 open IN, "<$infile";
34
35 @lines = <IN>;
36
37 foreach $line(@lines){
38
39 if ($line =~ /in=(.+$)/){
40
41 if( exists $out_hash{$1}){
42 print "$infile:$1 match at $out_hash{$1}\n";
43 }else{
44 print "$infile:$1 is undef\n";
45 }
46 }
47 }
48 close IN;
49 }
chk_mandatory.pl
1 #!/usr/bin/perl -wnl
2 # 一文字目が、#ではないけれども、=$にマッチングしている
3 # 行をプリントアウトとする
4 /^[^#].*=$/ and print "$ARGV $.: $_";
chk_targetjobid.pl
1 #!/usr/bin/perl -wnl
2 /target.jobid=$/ and print "$ARGV $. :$_";
chk_invalid.pl
1 #!/usr/bin/perl -wnl
2
3 /\(/g and print "$ARGV $.: $_ found invalid char";
4 /\)/g and print "$ARGV $.: $_ found invalid char";
chk_printutil.pl
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
4
5 my @lines;
6 my $line;
7 my $flg=0;
8 my $head;
9 my $seq;
10 my $seq2;
11
12 open IN, $ARGV[0];
13
14 @lines = <IN>;
15
16 $seq2 = substr($ARGV[0] ,6, 2);
17 $head = substr($ARGV[0], 0, 5);
18
19 foreach $line(@lines){
20
21 if ($line =~ /target.jobid=$head(.*)/) {
22
23 $seq = substr($1, 1, 2);
24
25 if ($seq2 > $seq){
26
27 $flg = 1;
28
29 }
30 }
31 }
32
33 if ($flg == 0){
34 print "$ARGV[0]:this file is invalid.\n";
35 }