最近の開発では、Perlは使用されることが少ないですが、
今でもインフラ環境では必須言語であるPerl。
特に、Windows環境では、
・バッチの貧弱さ
・PowerShellのわかりにくさ
から、perlワンライナー知識は今でも必須だと思います。
この記事では、perlワンライナーの自分用まとめと、
perl以外の軽量言語(ruby,python)でのワンライナーについて、
比較していこうと思います。
perlコマンドのオプション
-e 'code' コードの実行
-w 警告
-n 読み込み(出力しない)
-p 読み込み(出力する)
-l 行末処理
-M'モジュール名' モジュールのロード
-a awkモード
perlコマンド使い方
-wl 出力を生成
-wnl 入力または入出力を生成
-wnla フィールド処理
-wnlaF'sep' フィールド処理(カスタムセパレータ)
-i.extension バックアップファイルを作成してからファイルを編集
perl例文
perl -wl -e 'print 22/7;'
単純な出力
perl -wnl -e 'print;' file1 file2
cat風出力
perl -wnl -e '/RE/ and print;' file1
grep風出力
perl -wnl -e '/RE/ or print;' file1
grep -v風出力
perl -wnl -e '/RE/i and print;' file1
grep -i風(大文字小文字を意識しない)
perl -wnl -e '/RE/ and print $ARGV and close ARGV;' file1
grep -l風出力(該当キーワードが含まれるファイル名を出力)
perl -wnl -e '/\QSTRING\E/ and print;' file
fgrep風(文字リテラルとのマッチング)
perl -wpl -e 's/RE/replacement/g;' file1
sed風の置換
perl -wpl -e '$.==N and s/RE/replacement/g;' file1
N行目のみ置換
perl -wpl -e 's/RE/$1/g;' file1
後方置換
perl -wpl -e '$.>=N and print;' file1
N行目以降を表示
perl -wnla -e 'print $F[0];' file1
第一フィールドを表示
find . -type f -print | perl -nwlaF'/' -e 'print $F[2];' file1
findでカレントディレクトリ以下のファイルを検索し、perlで第二フィールドを表示