Memoize |
BasicWerk
EC Support
Technique
Facebook
|
20141130115939_Perl_oneliner_switch |
Perl_oneliner_switch
sample.txt 1 aaa 2 bbb 3 ccc sample.csv 1,aaa 2,bbb 3,ccc
Perl One-Liner # ファイルを読み込まない=Perl code のみで完結する場合 # 出力に自動的に改行を付けない(Default) % perl -w -e 'print 23 * 8;' 184% # 入力を chomp する + 出力(print)に自動で改行を付ける -l % perl -wl -e 'print 23 * 8;' 184 # 入力を処理(自動出力はしない) -n % perl -wnl -e 'print' sample.txt 1 aaa 2 bbb 3 ccc % sed '/^3/d' sample.txt | perl -wnl -e 'm/a+/ and print' 1 aaa # フィールド処理(デフォルトは空白文字でセパレート) -a # 環境変数 @F にアクセス % perl -wnla -e 'print $F[1]' sample.txt aaa bbb ccc # セパレート文字を指定 -F % perl -wnlaF, -e 'print $F[1]' sample.csv aaa bbb ccc # print もオプションで on -p % perl -wnlp -e 's/,/\t/' sample.csv 1 aaa 2 bbb 3 ccc # -e 'code' の部分は別ファイルに置き換えられる % cat sample_script.pl s/,/\t/; s/^(\d+)/$1:/; % perl -wnlp sample_script.pl sample.csv 1: aaa 2: bbb 3: ccc # ファイルバックアップ & 上書き -isuffix % cp sample.csv sample.csv.original % perl -i.bak -wnlp sample_script.pl sample.csv % ls sample.csv* sample.csv sample.csv.bak sample.csv.original % cat sample.csv 1: aaa 2: bbb 3: ccc % cat sample.csv.bak 1,aaa 2,bbb 3,ccc # モジュールを使う -M'Module_name' % perl -M'LWP::Simple qw/get/' -wnl -e 'print get($_)' <<<'http://basicwerk.com/' <!DOCTYPE html> <html> <HEAD> ... ... </html> sample_para.txt 今日の予定: ローゼンに買い物行く 昼寝 明日の予定: 歯医者行く 昼寝
# パラグラフ単位で処理 -00 % perl -00 -wnl -e 'print "$.\. $_"' sample_para.txt 1. 今日の予定: ローゼンに買い物行く 昼寝 2. 明日の予定: 歯医者行く 昼寝 # ファイル単位で処理 -0777 % perl -0777 -wnl -e 'print "#File#$.\n$_"' sample.txt sample.csv #File#1 1 aaa 2 bbb 3 ccc #File#2 1,aaa 2,bbb 3,ccc
# スイッチクラスタ -s % cat switch_sample.pl #! /usr/bin/perl -s -wn # -n, -t オプションを有効にする our ($n, $t); # -m='message' オプションを有効にする our ($m); # -n が on だったら行番号を出力 print "$.:" if $n; # -t が on だったら TAB を出力 print "\t" if $t; # 本体を出力 print "$_"; # -m にメッセージが設定されていたら # 最後に出力 END { print "$m\n" if $m; } # オプション無し(単なる cat) % switch_sample.pl sample_para.txt 今日の予定: ローゼンに買い物行く 昼寝 明日の予定: 歯医者行く 昼寝 # -n % switch_sample.pl -n sample_para.txt 1:今日の予定: 2:ローゼンに買い物行く 3:昼寝 4: 5:明日の予定: 6:歯医者行く 7:昼寝 # -n -t % switch_sample.pl -n -t sample_para.txt 1: 今日の予定: 2: ローゼンに買い物行く 3: 昼寝 4: 5: 明日の予定: 6: 歯医者行く 7: 昼寝 # -n -t -m='...' % switch_sample.pl -n -t -m='EOT' sample_para.txt 1: 今日の予定: 2: ローゼンに買い物行く 3: 昼寝 4: 5: 明日の予定: 6: 歯医者行く 7: 昼寝 EOT
参考:
|
© Shin Nakamura/BasicWerk 2014 |