Grep 查找以模式文件中的字符串开头的行

Exe*_*ork 4 command-line grep

我有一个文件(模式文件),我想通过 提供给 grep -f,并且我想在另一个文件(搜索文件)中查找匹配项,其中字符串以给定模式开头。例如:

模式文件

1234
qwerty
chicken
Run Code Online (Sandbox Code Playgroud)

搜索文件

12345
543212345
qwerty
1fwf32sgww
chicken fingers
Run Code Online (Sandbox Code Playgroud)

鉴于上述文件,grep 应返回以下行

12345
qwerty
chicken fingers
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Sté*_*las 12

您可以^在所有行前面加上PATERN_FILE要传递到的grep -f

paste -d '^' /dev/null PATTERN_FILE | grep -f - SEARCH_FILE
Run Code Online (Sandbox Code Playgroud)

或者sed 's/^/^/' PATTERN_FILE代替paste.

现在,如果中的行PATTERN_FILE是固定字符串而不是基本正则表达式,那么您还需要转义所有正则表达式运算符:

sed 's/[][$^*\\.]/\\&/g; s/^/^/' PATTERN_FILE | grep -f - SEARCH_FILE
Run Code Online (Sandbox Code Playgroud)