grep内部工作(具有其他文件给出的值的行)?

use*_*690 5 bash grep

我找到了一些有效的grep,但很想知道为什么.

我有file1.txt

1
2
3
Run Code Online (Sandbox Code Playgroud)

和file2.txt

1,xx,bb,bb
1,yy,cc,cc
2,xx,dd,dd
2,yy,dd,dd
3,yy,ee,ee
4,aa,ee,ee
5,zz,ee,ee
5,za,ee,ff
x,22,ff,ee
Run Code Online (Sandbox Code Playgroud)

grep "`cat file1.txt `" file2.txt

确实是产出

1,xx,bb,bb
1,yy,cc,cc
2,xx,dd,dd
2,yy,dd,dd
3,yy,ee,ee
x,22,ff,ee
Run Code Online (Sandbox Code Playgroud)

但为什么 ?我本以为它会尝试将完整的"字符串"或exat匹配同时匹配到几行.

欢迎使用指针跟进读数.

Jos*_*lly 3

如此处所述:http://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html

Pattern_list 的值应包含一个或多个由换行符分隔的模式

因此,换行符被解释为模式之间的分隔符,当您引用 的输出时cat,文件中的换行符将被保留,并且 grep 使用它们将文件内容分成多个模式,每行一个。这似乎与使用 的工作方式相同grep -f。您还可以在不使用 cat 的情况下通过在命令行的模式字符串中添加换行符来测试这一点:

$ grep "patt1
patt2" file.txt 
Run Code Online (Sandbox Code Playgroud)