我对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。所以appleinfile1将匹配pineapplein 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
    

相关内容