我尝试打印文件夹下每个文件的第一行(以>作为文件是fasta文件开头),并使用sed提取出没有质粒和片段的那些行。
我做了ls * | xargs -I one sed -n -e '/^>.*[^fragment|plasmid].*/p' one > outfile
但它不起作用?我应该如何修改它?
答案 0 :(得分:2)
我是否正确地认为您只想打印每个文件的第一行,如果该行不包含片段或质粒?那就是:
awk 'FNR==1 && !/fragment|plasmid/' *
如果这不是您想要的,请使用一些有代表性的样本输入和预期输出更新您的问题。
答案 1 :(得分:1)
这对你有用吗?
head -q -n 1 * | egrep -v "^>.*(fragment|plasmid).*"
答案 2 :(得分:1)
如果我将您的要求作为以>开头的打印行阅读除非它们含有片段或质粒,否则我认为这样做会为你做到:
sed -ne '/^>/{/fragment/;b;/plasmid/b;p;}' one > outfile
它忽略了所有不以>开头的行,如果它找到片段或质粒,它会跳到脚本末尾并转到下一行。