隔离单词后跟某些单词组合

Isolate words followed by certain word combinations

我有一个数据集,看起来像我在下面输入的内容。我在 Mac 的终端上工作。我只想保留具有 'nohitsfound' 的查询,例如查询 ENST00000446470.1,并删除具有 'length' 连续两次或更多次的查询,例如 ENST00000382676.1。但是,我不知道该怎么做。

Query=ENST00000446470.1 Length=261 Nohitsfound Query=MSTRG.50645.1 Length=2007 Nohitsfound Query=ENST00000382676.1 Length=285 Length=94 Length=94 Length=94 Length=94 Query=ENST00000641821.1 Length=1217 Nohitsfound Query=ENST00000641436.1 Length=1821 Nohitsfound Query=ENST00000649959.1 Length=1734 Nohitsfound Query=MSTRG.50650.1 Length=245 Nohitsfound Query=ENST00000514465.1 Length=1395 Length=464 Length=464 Length=464

非常感谢任何帮助!

echo 'Query=ENST00000446470.1 Length=261 Nohitsfound Query=MSTRG.50645.1 Length=2007 Nohitsfound Query=ENST00000382676.1 Length=285 Length=94 Length=94 Length=94 Length=94 Query=ENST00000641821.1 Length=1217 Nohitsfound Query=ENST00000641436.1 Length=1821 Nohitsfound Query=ENST00000649959.1 Length=1734 Nohitsfound Query=MSTRG.50650.1 Length=245 Nohitsfound Query=ENST00000514465.1 Length=1395 Length=464 Length=464 Length=464' | tr "Q" "\n" | grep Nohitsfound | grep -vwE "Length.*Length"

假设 char Q 不是查询本身的一部分,这将起作用。

说明:

  • echo 是打印到屏幕的终端命令。
  • | (称为管道)是一种将输出重定向到下一个的形式 命令。
  • tr 会将每个“Q”替换为“\n”(这是一个新行。)
  • grep 将仅保留找到 Nohitsfound 的行。
  • grep -vwE 将删除匹配正则表达式“Length.*Length”的行。