grep输入文件中的精确单词

grep输入文件中的精确单词,grep,Grep,我的输入文件: text.txt-要搜索的文件 patterns.txt-包含要在text.txt文件中搜索的单词列表(每行一个单词)的文件 text.txt是: abc def ghi jkl mno pqr ; stu zzz yyy xxx jkl abs abc1 ; mno jjj aaa abc1M1 pattern.txt是: abc pq abc1M1 如果我这样做: | => grep -

我的输入文件:

  • text.txt-要搜索的文件
  • patterns.txt-包含要在text.txt文件中搜索的单词列表(每行一个单词)的文件
  • text.txt是:

    abc     def     ghi
    jkl     mno     pqr ; stu
    zzz     yyy     xxx
    jkl     abs     abc1 ; mno
    jjj     aaa     abc1M1
    
    pattern.txt是:

    abc
    pq
    abc1M1
    
    如果我这样做:

    | => grep -f patterns.txt text.txt
    abc def ghi
    jkl mno pqr ; stu
    jkl abs abc1 ; mno
    jjj aaa abc1M1
    
    但是,只应返回两行:

    abc def ghi
    jjj aaa abc1M1
    
    i、 e.仅与patterns.txt文件中给出的完整单词“abc”和“abc1M1”匹配的行。我应该如何构造我的查询

    谢谢你的帮助

    编辑:Cyrus建议尝试“-Fwf”选项,但它仍然没有给我想要的:

    | => grep -Fwf patterns.txt text.txt
    abc def ghi
    
    此外,我正在mac电脑上运行grep:

    | => grep --version
    grep (BSD grep) 2.5.1-FreeBSD
    
    使用GNU grep:

    grep -Fwf pattern.txt text.txt 
    
    输出:

    abc def ghi jjj aaa abc1M1 abc def ghi jjj aaa abc1M1
    -F
    :将模式解释为固定字符串,而不是正则表达式

    -w
    :仅选择包含构成整词的匹配项的行



    请参阅:
    mangrep

    您好,谢谢您的回复。当我尝试这样做时,我得到:|=>grep-Fwf patterns.txt text.txt abc def ghi…请参阅主帖子中的编辑以获得格式化输出检查这两个文件是否有特殊字符:
    cat-A文件名
    cat-v文件名
    我用“cat-v patterns.txt”和“cat-v text.txt”进行了检查,但没有特殊字符。输出与主帖子中显示的文件完全相同。啊哈!下载并安装了GNU grep,现在一切似乎都正常了。谢谢你的帮助!!