我正在尝试使用 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-000088
in 中的子串AFFX-KIT-000088-A
是一个完整的单词。
“单词字符”是匹配的字符[[:alnum:]_]
,即字母数字字符和下划线。
在多列数据中,假设制表符分隔字段并在第 3 列中匹配:
awk -F '\t' '$3 == "AFFX-KIT-000088"' file
也就是说,将第三个字段与特定字符串进行比较。
当这样的条件缺少关联操作时,如果条件满足,则默认操作是打印整个输入记录真的。如果您只想打印字段的数据:
awk -F '\t' '$3 == "AFFX-KIT-000088" { print $3 }' file