我正在使用 KSH、Solaris 5.10。假设file1
包含水果列表并file2
包含水果和坚果列表。我对以下命令的理解
egrep -if file1 file2
是它将从 中获取第 1 行file1
并对其进行整体搜索file2
,并对 中的所有行重复此过程file1
。
file1
所以最终的输出将是和中出现的所有水果file2
。如果有错请纠正我,并在需要时建议我进行任何改进。
答案1
内部机制可能不同,但是是的,效果就是你所描述的。注意事项:
file2
如果给定的命令的任何部分与 中的行匹配,则该命令将匹配 中的行file1
。所以apple
infile1
将匹配pineapple
infile2
。您-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