Perl学習チュートリアルの単一行コマンドの詳細な説明

序文

この記事では、主に Perl の単一行コマンドに関する関連コンテンツを紹介し、参考や学習のために共有します。

ワンライナーに関連する Perl パラメータ

  • -a 自動分割モード。$ をスペースで区切って @F に保存します。つまり、@F=split //, $
  • -F は、-a の区切り文字を指定します。
  • -l 入力コンテンツを自動的に切り取り、出力コンテンツに自動的に改行を追加します。
  • -n は while(<>) と同等です
  • -e コマンド、つまりスクリプトを実行します。
  • -p 自動ループ + 出力、つまり while(<>){コマンド (スクリプト); print;}

上記のパラメータを覚えておいてください。perl を使用して 1 行のコマンドを書き始めることができます。

上は簡易バージョン、下の写真は完全バージョンと見なすことができます

次の例に従って Perl を 1 行で理解する

1. 基本フォーマット: perl -parameter 'command' 入力ファイル

2.perl -e必ず記述するパラメータについて

3.perl -pe ファイルの各行を読み取り、指定されたコマンドに従って処理し、最終的に出力するために使用できます。たとえば、ファイル 1.txt の aaa を AAA に置き換えます。

1

perl -pe 's/aaa/AAA/g' 1.txt

4. perl -l パラメータは、 perl でよく使用されるwhile(<>){chomp;}構文の代わりに n とほぼ一致します。

5. タブ区切りファイルの各行の内容を処理する必要がある場合、perl -alneパラメータはほぼ必須です。たとえば、これはwhile(<>){chomp;@F=split /\s+/,$_;print "$F[0]\n"}次と同等です。

1

perl -alne 'print $F[0]'

6. Perl の単一行コマンド スクリプト内の変数を事前に宣言する必要はありません。すべての空白行を出力する場合、各行は行数で始まります。

1

perl -ne 'print ++$a." $_" if /./'

7. Perl の単一行コマンドは、規則的なマッチングが優れているため、sed/grep などのシェル コマンドよりも優れている場合があります。通常、単純なマッチングは次のとおりです: grep -c の機能を模倣した行番号の一致:

1

perl -lne '$a++ if /regex/; END {print $a+0}'

8. Perl の単一行コマンドでは、sum 関数を使用するモジュールなどの Perl モジュールを使用できます。

1

perl -MList::Util=sum -alne 'print sum @F'

9. Perl は、ファイル内の総単語数を出力するなど、awk のような END コマンドも使用できます。

1

perl -alne '$t += @F; END { print $t}'

map{}10. Perl は、一致する単語の総数を出力するなど、他の関数も使用できます。

1

perl -alne 'map { /regex/ && $t++ } @F; END { print $t }'

11. perl の単一行コマンドは、一致する行を出力するなど、perl の単純さを極限まで利用していると言えます。

1

perl -ne '/regex/ && print'

12. Perl の単一行コマンドは、perl と同じくらい柔軟に正規表現を使用できます

1

perl -ne 'print if /^\d+$/'

上記の例はすべて http://www.catonmat.net/blog/perl-one-liners-explained-part-one/ からのものです。

Perl を使用してデータを処理する人にとって、Perl を 1 行少し記述するだけで、反復的なコマンド、特に 1 ~ 2 回では使用されなくなるスクリプト、特にシェルを使用するのが不便なスクリプトを作成する時間を効果的に短縮できます。ウィンドウ システムでのコマンドの場合。

PS.もちろん、git を使用して、Windows システムで Unix コマンド環境をシミュレートすることもできます~~~~

全体として、学習や多用途に非常に適しています。

 

おすすめ

転載: blog.csdn.net/jh035/article/details/128141609