egrep -if file1 file2の私の理解は正しいですか?

egrep -if file1 file2の私の理解は正しいですか?

私はKSH、Solaris 5.10を使用しています。file1果物のリストが含まれており、file2果物とナッツのリストが含まれているとします。次のコマンドの私の理解

egrep -if file1 file2 

これは、行1を取得してfile1全体を検索し、file2すべての行に対してこのプロセスを繰り返すことですfile1

file1したがって、最終出力は合計に表示されるすべての果物になりますfile2。私が間違っている場合は訂正してください。必要に応じて改善を提案してください。

答え1

内部メカニズムは異なる場合がありますが、そうです。効果はあなたが説明するのと同じです。指示:

  • file2与えられたコマンドの一部がの行と一致すると、コマンドはの行と一致しますfile1。したがって、appleinはinとfile1一致します。これを防ぐには、次の方法を使用することもできます。pineapplefile2-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
    

関連情報