我找到了一些有效的grep,但很想知道为什么.
我有file1.txt
1 2 3
和file2.txt
1,xx,bb,bb 1,yy,cc,cc 2,dd,dd 2,dd 3,ee,ee 4,aa,ee 5,zz,za,ff x,22,ff,ee
做grep“`cat file1.txt`”file2.txt
确实是产出
1,ee x,ee
但为什么 ?我本以为它会尝试将完整的“字符串”或exat匹配同时匹配到几行.
欢迎使用指针跟进读数.
如下所述:
http://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html
The pattern_list’s value shall consist of one or more patterns separated by newlines
因此换行符被解释为模式之间的分隔符,当引用cat的输出时,文件中的换行符将被保留,grep使用它们将文件内容分成多个模式,每行一个.这看起来与使用grep -f的方式相同.您也可以在不使用cat的情况下通过在命令行中添加模式字符串中的换行来测试它:
$grep "patt1 patt2" file.txt