perl -n
とperl -p
のオプションの違いは何ですか?"perl -n"と "perl -p"の違いは何ですか?
違いを実証する簡単な例は何ですか?
どちらを使用するかはどのように決定しますか?
perl -n
とperl -p
のオプションの違いは何ですか?"perl -n"と "perl -p"の違いは何ですか?
違いを実証する簡単な例は何ですか?
どちらを使用するかはどのように決定しますか?
-p
各行が印刷されます。 while (<>) { ... } continue { print }
-n
は、各行を自動的に印刷しません。 while(<>) {...}
などに相当し、FOO
でfoo
を置き換える:
$ echo 'foo bar' | perl -pe 's/foo/FOO/'
FOO bar
$ echo 'foo bar' | perl -ne 's/foo/FOO/'
$
例えば、-n
が有用である一つの例では、すべての行が印刷されたくない場合で、かつ、コードで条件付きの印刷があり、 foo
を含む表示ラインのみ:
$ echo -e 'foo\nbar\nanother foo' | perl -ne 'print if /foo/;'
foo
another foo
$
のperl -nはしばらく(<>)と等価である{...} のperl -p等価tと{...;印刷;}(<>)一方O
-p
は-np
の略であり、-n
で作成されたループの各パスのために印刷される$_
を引き起こします。
LINE: while (<>) {
...
}
continue {
die "-p destination: $!\n" unless print $_;
}
:
LINE: while (<>) {
...
}
一方
perl -pe'...'
は、以下のプログラムを実行する:
perl -ne'...'
は、以下のプログラムを実行します
perl
のコマンドラインオプションについては、perlrunを参照してください。
* '-p'は' -np' *の略で、どういう意味ですか?私はドキュメンテーションでそれを見ない。 –
ドキュメントは '-p'を私とは違って記述しますが、同等です。私の記述は実装をより正確に反映し、2つの間の類似性を認めていますが、perlrunは完全に異なって無関係なふりをしています。しかし、再び、両方の説明は、異なるが、同等である。 – ikegami
どちらを使用するかはどのように決定しますか?
あなたは自動的に暗黙のwhile
ループの各反復の終わりに$_
の内容を印刷したい場合は、-p
を使用しています。 $_
を自動的に印刷したくない場合は、-n
を使用します。
例:-p
。ファイルに行番号を追加する:
$ perl -pe '$_ = "$.: $_"' your_file.txt
-n
の例です。基本grep
の交換。
$ perl -ne 'print if /some search text/' your_file.txt
@Rob Bednarkの答えと同じです: '-p'では、printは' continue'ブロックにあります。 'perl -pe 'next''コマンドを実行すると簡単にテストでき、入力したものを表示します。while(<>){next; print;}'は何も印刷しません。 – Dada