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