关于';grep-f';:将模式与文件匹配

关于';grep-f';:将模式与文件匹配,grep,Grep,我正在使用grep-f函数从文件中提取与特定模式匹配的行。假设我的模式文件是pattern.txt,如下所示 1 2 3 4 5 与此模式匹配的文件是file.txt 1::anv 2::tyr 3::yui 4::fng 5::gdg 6::ere 7::rer 8::3rr 9::gty 现在,当我做grep-f pattern.txt file.txt时,我得到了这个-> 1::anv 2::tyr 3::yui 4::fng 5::gdg 8::3rr 上面输出的最后一行导致了我的

我正在使用
grep-f
函数从文件中提取与特定模式匹配的行。假设我的模式文件是
pattern.txt
,如下所示

1
2
3
4
5
与此模式匹配的文件是
file.txt

1::anv
2::tyr
3::yui
4::fng
5::gdg
6::ere
7::rer
8::3rr
9::gty
现在,当我做grep-f pattern.txt file.txt时,我得到了这个->

1::anv
2::tyr
3::yui
4::fng
5::gdg
8::3rr
上面输出的最后一行导致了我的问题。如何修改此grep命令以获得如下输出(显示正确的对应关系)

1::anv
2::tyr
3::yui
4::fng
5::gdg

在模式之前添加
^
,以便
grep
将一行开头与模式匹配。如果您的模式实际上是一组数字,则不需要模式列表。只需使用
^[1-5]:

嗯,有很多可能的解决方案。您告诉grep查找所有包含3的行,而“8::3rr”行实际上包含3。所以你需要更具体地说明你在寻找什么

例如,可以将模式更改为“1:”和“2:”等,以仅匹配后跟冒号的数字。或者您可以将它们更改为“^1”、“^2”等,以便只匹配行首的数字。这取决于您的数据,但您可能同时需要这两种数据,因此您对“1:”的搜索与“21:”不匹配,对“^5”的搜索与“53:”不匹配。在这种情况下,您的模式文件如下所示:

^1:
^2:
^3:
^4:
^5:

我试过grep“
more patt.txt”
“file.txt | awk-F”:“{print$1”“$2}”,但这也给了我同样的问题。请注意,如果数字太大,^1将匹配10:,等等。