首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用bash和awk删除不包含字符串列表的行

使用bash和awk删除不包含字符串列表的行
EN

Stack Overflow用户
提问于 2018-06-07 03:33:12
回答 1查看 154关注 0票数 0

我有一个非常大的文本文件myReads.sam,它看起来像这样:

代码语言:javascript
复制
J00118:315:HMJWTBBXX:4:1118:21684:2246  4   *   0   0   *   *   0   0   CR:Z:TTTGTCATCTGTTTGT   
J00118:315:HMJWTBBXX:4:2211:19532:14449 4   *   0   0   *   *   0   0   CR:Z:TATGTCATCTTTCCTC

我还有另一个500行的文本文件myIDs.txt,它看起来像这样:

代码语言:javascript
复制
CR:Z:TTTGTCATCTGTTTGT
CB:Z:CTACCCAGTCGACTGC
QT:Z:AAFFFJJJ

我想创建第三个文本文档myFilteredReads.sam,它排除任何不包含myIDs.txt中字符串之一的行。因此,例如,如果我使用上面的myReads.sam和myIDs.txt代码片段应用此过滤器,新文件将如下所示:

代码语言:javascript
复制
J00118:315:HMJWTBBXX:4:1118:21684:2246  4   *   0   0   *   *   0   0   CR:Z:TTTGTCATCTGTTTGT   

我知道如果我只过滤一个字符串(例如‘'CR:Z:TTTGTCATCTGTTTGT'),我可以这样使用awk:

代码语言:javascript
复制
cat myReads.sam | awk '!/CR:Z:TTTGTCATCTGTTTGT/' > myPartiallyFilteredReads.sam

不过,我不确定如何命令awk将引号中的部分替换为文件的每一行。我想我可以尝试遍历这些文件:

代码语言:javascript
复制
cat myIDs.txt | awk 'BEGIN {i = 1; do { !/i/; ++i } while (i < 500) }' myReads.sam > myFilteredReads.sam

对我不起作用的...but。

有什么建议吗?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-06-07 03:40:22

main是包含内容的文件

str是包含“感兴趣的字符串”的文件

out是输出文件

代码语言:javascript
复制
#!/bin/bash

while read line; do
  grep ${line} main >> out
done < str
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50728208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档