「grep -v -l」は「grep -L」と同じですか?

「grep -v -l」は「grep -L」と同じですか?

時々 the の代わりにgrep's-vとスイッチを一緒に使用することを提案する答え(または説明)があります(特に後者が使用できない場合)。著者は、彼らが同等だと信じているようだ。-l-L

では、お互いを変えて使えますか? IOW、grep -v -lと同じ結果が出ますかgrep -L

ベストアンサー1

いいえ、同じではないので、結果は次のようになります。ほぼいつも1は異なります。
各スイッチの機能を見てみましょう。

‘-L’
‘--files-without-match’
     Suppress normal output; instead print the name of each input file
     from which no output would normally have been printed.

これは簡単なはずです。
grep -L 'pattern' ./*
一致する行を含まないすべてのファイルの名前を印刷します'pattern'

‘-v’
‘--invert-match’
     Invert the sense of matching, to select non-matching lines.

これも非常に簡単です。
grep -v 'pattern' ./*
各ファイルに一致しないすべての行を印刷します。'pattern'

‘-l’
‘--files-with-matches’
     Suppress normal output; instead print the name of each input file
     from which output would normally have been printed.

繰り返しますが、簡単です。
grep -l 'pattern' ./*
一致する行が1つ以上含まれるすべてのファイルの名前を印刷します'pattern'

今和を合わせると-vどうなりますか-lgrep -l一致しない行を選択して、
grep -vl 'pattern' ./*
一致しない行が1つ以上含まれているすべてのファイルの名前を印刷することを除いて、それと大差ありません'pattern'


したがって、違いに注意してください。

grep -Lファイル名の印刷一致する行がない場合にのみ 'pattern'
grep -vlファイル名の印刷1 つ以上の行が一致しない場合のみ 'pattern'


1:
上記に基づいて、これら2つのコマンドがいつ同じ出力を生成できるかを簡単に知ることができます。
- ファイルが空ではないみんな行がパターンと一致する場合(この場合は出力なし
)、またはファイルが空ではないいいえ行がパターンと一致する - この場合に一覧表示されます。


物語の教訓:grep -vl模倣のために使用しないでくださいgrep -L。サポートしていない
場合grep-Lこれがシミュレートする正しい方法です。

おすすめ記事