如何避免 grep 匹配行 -

如何避免 grep 匹配行 -

我正在尝试使用 grep 从文件中仅获取匹配的行。问题是,例如当我使用以下表达式时:

grep -w AFFX-KIT-000088 textfile

它将返回:

AFFX-KIT-000088-A
AFFX-KIT-000088

但是,我只想要完全匹配的表达式 AFFX-KIT-000088。我已经尝试过 -F -E 并引用。我需要 grep 行的文本文件非常大,我无法修改它(这也意味着我需要一个不涉及很多步骤的答案,因为它需要永远处理)。

笔记:

该文件实际上非常大并且有很多列(不仅仅是我用于 grep 的那一列)。

答案1

grep -x 'AFFX-KIT-000088' file

力量-x的匹配完全的线。

您可能还想-F在匹配字符串而不是正则表达式时添加。这可能会加快操作速度。

-w选项在这里不起作用,因为-它不是“单词字符”。因此AFFX-KIT-000088in 中的子串AFFX-KIT-000088-A是一个完整的单词。

“单词字符”是匹配的字符[[:alnum:]_],即字母数字字符和下划线。


在多列数据中,假设制表符分隔字段并在第 3 列中匹配:

awk -F '\t' '$3 == "AFFX-KIT-000088"' file

也就是说,将第三个字段与特定字符串进行比较。

当这样的条件缺少关联操作时,如果条件满足,则默认操作是打印整个输入记录真的。如果您只想打印字段的数据:

awk -F '\t' '$3 == "AFFX-KIT-000088" { print $3 }' file

相关内容