【问题标题】:Grep exact match with multple strings, no dash [duplicate]Grep 与多个字符串完全匹配,没有破折号 [重复]
【发布时间】:2020-10-16 12:33:07
【问题描述】:

我有一个像这样的基因列表保存在一个变量中:

NOL6
NPPC
NPRL2
NRG1
NT5C1B
NUDT19
OSER1
PAEP
PARD3
PCDHA4

我想grep 将所有这些基因放在另一个相同类型的 txt 列表中。我试过这个:

grep -w "^$genes$" list.txt

问题是它返回给我的基因带有破折号-,类似于 NT5C1B:

NT5C1B-RDH14

但是,如果我单独搜索基因:

grep "^NT5C1B$" list.txt

我不会用破折号获得基因,而只会:

NT5C1B

有没有办法使用grep -w 或其他命令来做到这一点?

【问题讨论】:

  • -x替换-w?
  • 我们还需要在list.txt 中查看一些文本,您的$gene 变量中有什么内容?您在第一个代码块中粘贴的单个条目还是所有条目?
  • @WiktorStribiżew 我认为这个问题可能很快就结束了......“我不会用破折号获得基因,但只有:......”我 OP 希望在结果中得到Pattern-something。另外,我们没有看到输入文本,我们不知道它是否是-x 大小写。无论如何,OP没有清楚地描述需求。

标签: grep


【解决方案1】:

使用-x,因为它只选择完全匹配。 -w 可以匹配子字符串后有非单词组成字符的字符串。见grep(1)

【讨论】:

  • 就是这样,谢谢!如果除了基因名称之外还有更多的列,例如:chr1 NT5C1B。行得通吗?
  • @Swimmingbird 它只会返回完全匹配。所以假设你想返回“chr1 NT5C1B”,那么你需要执行grep -x "chr1 NT5C1B"
  • 如果我只想grep基因名称(NT5C1B)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多