【问题标题】:How to search exact phrase from a file which consist of set of phrase with hyphen如何从由带有连字符的短语集组成的文件中搜索确切的短语
【发布时间】:2021-12-24 11:31:24
【问题描述】:

我有一个文件,它由如下几个短语组成。我想从中找出完全匹配的内容。

file.txt

abc
abc-def
xyz
xyz-pqr
pqrs

如果我搜索“abc”,我只需要返回abc。 要么 如果我搜索“abc-def”,我只需要返回“abc-def

首选输出

$grep -w "abc" file.txt
abc

$grep -w "abc-def" file.txt
abc-def

对于连字符

,以下方法不起作用
$grep -w abc file.txt 

【问题讨论】:

  • "word" 字符是数字、字母和下划线。连字符是一个非单词字符,它解释了这种 grep 行为。

标签: linux bash unix awk grep


【解决方案1】:

使用给定的数据/文件,您可以使用-x 标志。

grep -x abc file.txt

grep -x abc-def file.txt

  • -x, --line-regexp 强制 PATTERN 只匹配整行

  • -x 标志由 POSIX grep(1) 定义/要求

【讨论】:

    【解决方案2】:

    为了匹配整行,您需要匹配行的开头和结尾:

    grep '^abc$' file.txt
    grep '^abc-def$' file.txt
    

    【讨论】:

      【解决方案3】:

      你可以这样使用awk

      awk -v w="abc" '$1==w' file.txt
      abc
      

      或者,

      awk '$1==w' w="abc" file.txt
      

      使用== 运算符,它只返回完全匹配的字符串。我们正在使用-v 开关或通过标准输入设置与w="abc" 匹配的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 2016-01-26
        • 2015-10-19
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        相关资源
        最近更新 更多