2017-09-20 16 views
2

で始まらない行数を見つけるために、grepコマンドを使用してだから私は2つのコマンドを思い付いた:は、Linux:母音

1:grep -c [^[^aeiouAEIOU]] filename.txt;結果:52331

2:grep -v -c [^aeiouAEIOU] filename.txt;結果:52333

これらの2つのコマンドは私と同じですが、結果は異なります。

助けてください、これは私には意味がありません。

答えて

0

あなたも試すことができ、この:

grep -Ewcv "*[aeiou]*" filename.txt 
0

これらの2つのコマンドが実際に異なることを行うと、それらのどれも実際にあなたが何を考えません:

grep -c [^[^aeiouAEIOU]] filename.txt 

することはできません本当に巣[^...]式を。代わりに、この正規表現は、]と連結された[^[^aeiouAEIOU]と解釈されます。つまり、[^、または母音ではない文字と、]のいずれの組み合わせでも、行内のどこにでも一致します。たとえば、これらの文字列は、b],c],#],;]と一致します。これらはできません:a],E]cd。そして、「どこかのラインで」あなたの2番目のコマンドについてなど、上記grepのコマンドは、このようなaaab]i uc]として行をカウントすることを意味します

grep -v -c [^aeiouAEIOU] filename.txt 

ここでは、二重否定を持っています。まず、[^aeiouAEIOU]は、母音以外の文字と一致します。一方、grepに渡された-vオプションは一致を逆転させるため、一致しない行は[^aeiouAEIOU]と一致します。最終的な効果は、基本的にはgrepに「aeiouAEIOU以外のシンボルがないすべての行を数える」ということです。つまり、母音だけを含む行だけがカウントされます。実際あなたの母音で始まらない行数を与える必要があります

2つのコマンドは以下のとおりです。

grep -c ^[^aeiouAEIOU] filename.txt 
grep -v -c ^[aeiouAEIOU] filename.txt 
関連する問題