1. ホーム
  2. スクリプト・コラム
  3. パール

Perl学習チュートリアル - シングルラインコマンドの説明

2022-01-03 21:08:17

前置き

この記事では、Perlの単一行コマンドを紹介し、参考と学習のためにそれらを共有します。

One-Linerに関連するPerlパラメータ

  • -自動分割モードでは、$を空白で区切って@Fに保存する、つまり@F=split //, $となります。
  • -F -aセパレータを指定する
  • -l 入力は自動化され、出力は改行されます。
  • -n は while(<>) と同じです。
  • -e はコマンドを実行します(スクリプトとも呼ばれます)。
  • -p 自動ループ+出力、別名 while(<>){ コマンド (スクリプト); print;}.

これらの点に注意すれば、perlを使って一行コマンドを書くことはほとんど可能です。

上記は入門編ですが、以下の画像は完全版です。

次の例に基づいて、perlの1行を理解する。

1. 基本書式:perl - 引数 'コマンド' 入力ファイル

2. perl -e は、必ず書かなければならないパラメータです。

3. perl -pe は、ファイルの各行を読み込んで、与えられたコマンドに従って処理し、最後に出力するのに使うことができます。例えば、ファイル1.txtのaaaをAAAに置き換えます。

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

4. perlの-l引数は、perlがよく使うnの代わりに、ほとんど独占的に使うことができます。 while(<>){chomp;} 構文

5. タブで区切られたファイルの各行を処理する必要がある場合は perl -alne 引数はほとんどの場合必要で、例えば while(<>){chomp;@F=split /\s+/,$_;print "$F[0]\n"} に相当するのは

perl -alne 'print $F[0]'

6. perl の単一行コマンドスクリプトの変数は、あらかじめ宣言する必要はありません。もし、すべての空行を出力し、各行を行番号で開始したい場合は、次のようにします。

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

7. Perl の一行コマンドは、その優れた正規表現により、sed/grep のようなシェルコマンドを凌駕することがあります。通常、単純なマッチングは次のようになります: マッチの行番号、grep -c の機能の模倣

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

8. perl の単一行コマンドは、sum 関数を使用するような perl のモジュールを使用することができます。

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

9. perl は awk のように END コマンドを使うこともでき、例えば、ファイル中の単語の総数を表示することができます。

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

10.perlは、次のように使うこともできます。 map{} でマッチした単語の総数を表示するなどの機能があります。

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

11. perlのシングルラインコマンドは、onにマッチした行をプリントアウトするなど、perlの簡潔さを極限まで利用していると言えるでしょう。

perl -ne '/regex/ && print'

12. perl の単一行コマンドは、perl と同様に柔軟に正の式を使用することができます。

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

上記の例は、http://www.catonmat.net/blog/perl-one-liners-explained-part-one/ から引用しています。

Perlを使ってデータを扱う人にとって、ちょっとしたPerlの1行は、繰り返しのコマンドを書く時間を短縮することができます。特に、1-2回使って、その後は使わないスクリプトは、Windowsでシェルコマンドを使うのが不便な場合、とても有効な手段だと思います。

PS. もちろんWindowsでもgitを借りてUnixのコマンド環境をエミュレートすることができますよ~~~~~。

全体として、より多くのことを学び、使用するのに適しています。

概要

上記はこの記事のすべての内容です、私はこの記事の内容は、あなたの勉強や仕事のためのいくつかの参考学習価値を持っている願っています、あなたは交換するメッセージを残すことができる質問がある場合は、スクリプトハウスへのあなたのサポートをありがとうございました。