0

ファイルをかき集めて、「silverlight #」の最初の出現を見つけようとしています。ここで、「#」はバージョン番号です。私は現在使用しています

cat silver.txt | perl -e 'while ($line = <>) {if ($line =~/Silverlight \d/) { $line =~/(Silverlight \d)/; print "$1\n";}}'

それは機能しますが、探しているパターンがファイル内で複数回見つかったため、次の出力が得られます。

Silverlight 5
Silverlight 5
Silverlight 5
Silverlight 5
Silverlight 5
Silverlight 5
Silverlight 4
Silverlight 4
Silverlight 4
Silverlight 4
Silverlight 3
Silverlight 3
Silverlight 3
Silverlight 3
Silverlight 2
Silverlight 2
Silverlight 2
Silverlight 1

ファイル内のすべてのパターンではなく、パターンの最初の出現のみを印刷するにはどうすればよいですか?

4

2 に答える 2

2

1 つの結果を印刷した後に終了したい場合は、1 つの結果を印刷した後に終了しないのはなぜですか?

cat silver.txt | perl -e 'while ($line = <>) {if ($line =~/Silverlight \d/) { $line =~/(Silverlight \d)/; print "$1\n"; exit }}'

そして、まったく同じことのより単純なバージョン:

cat silver.txt | perl -e 'while (<>) {if (/(Silverlight \d)/) { print "$1\n"; exit; }}'

または:

cat silver.txt | perl -e 'while (<>) { /(Silverlight \d)/ && print "$1\n" && exit; }'
于 2013-11-12T14:24:33.180 に答える