O mecanismo interno pode ser diferente, mas sim, o efeito é o que você descreveu. Advertências:
-
O comando como indicado corresponderá às linhas em
file2
, se alguma parte corresponder a uma linha emfile1
. Portanto,apple
infile1
corresponderá apineapple
emfile2
. Você pode evitar isso usando-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.
Se você usar isso, acho que você pode ignorar
egrep
e usargrep
diretamente. -
Uma linha vazia em
file1
fará com que tudo emfile2
seja impresso, portanto você deve filtrar essas linhas:grep -xif <(grep . file1) file2
-
Dependendo do que seus arquivos reais contêm, talvez você queira tratar
file1
como uma lista de sequências fixas em vez de expressões regulares estendidas. Umpea.
pode corresponder apear
. Então faça:grep -xiFf <(grep . file1) file2