grep 和 grep -f 的区别

grep 和 grep -f 的区别

我有一个包含以下 3 行的文件:

文件.txt

aaa|
bbb|
ccc|

另一个文件包含一行:

正则表达式.txt

^aaa\|

$grep ^aaa\| file.txt产量:

aaa|

$grep -f regex.txt file.txt产量:

aaa|
bbb|
ccc|

为什么grep -f和 的结果不同grep

$grep -V
grep (GNU grep) 3.1

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

答案1

您正在使用 grep基本正则表达式grep ^aaa\| file.txt与打字相同grep "^aaa|" file.txt。读取文件时grep -f regex.txt file.txt与 . 相同grep "^aaa\|" file.txt,转义|意味着匹配^aaa""匹配任何内容。

答案2

在文件中使用正则表达式时,不需要\(转义)。在文件中时,它被视为\字符。在命令中,它被视为转义并被忽略(由于缺少表达式的引用)。

相关内容