私はKSH、Solaris 5.10を使用しています。file1
果物のリストが含まれており、file2
果物とナッツのリストが含まれているとします。次のコマンドの私の理解
egrep -if file1 file2
これは、行1を取得してfile1
全体を検索し、file2
すべての行に対してこのプロセスを繰り返すことですfile1
。
file1
したがって、最終出力は合計に表示されるすべての果物になりますfile2
。私が間違っている場合は訂正してください。必要に応じて改善を提案してください。
答え1
内部メカニズムは異なる場合がありますが、そうです。効果はあなたが説明するのと同じです。指示:
file2
与えられたコマンドの一部がの行と一致すると、コマンドはの行と一致しますfile1
。したがって、apple
inはinとfile1
一致します。これを防ぐには、次の方法を使用することもできます。pineapple
file2
-x
-x Consider only input lines that use all characters in the line excluding the terminating <newline> to match an entire fixed string or regular expression to be matching lines.
これを使用するとスキップしてすぐに
egrep
行くことができると思いますgrep
。空行は
file1
次のとおりです。すべて印刷するには、file2
次の行をフィルタリングする必要があります。grep -xif <(grep . file1) file2
file1
実際のファイルに含まれる内容に応じて、拡張正規表現ではなく固定文字列のリストとして扱うことができます。pea.
一致することができますpear
。これを行う:grep -xiFf <(grep . file1) file2