0

我试图打印出文件夹下每个文件的第一行(以 > 开头,因为文件是 fasta 文件),并使用 sed 提取出没有质粒和片段的那些行。

我做了ls * | xargs -I one sed -n -e '/^>.*[^fragment|plasmid].*/p' one > outfile ,但它不工作?我应该如何修改它?

4

3 回答 3

2

如果该行不包含片段或质粒,我是否认为您只想打印每个文件的第一行?那就是:

awk 'FNR==1 && !/fragment|plasmid/' *

如果这不是您想要的,请使用一些具有代表性的示例输入和预期输出来更新您的问题。

于 2013-04-11T13:58:33.780 回答
1

这对你有用吗?

head -q -n 1 * | egrep -v "^>.*(fragment|plasmid).*"
于 2013-04-10T15:00:43.717 回答
1

如果我将您的要求读作以 > 开头的打印行,除非它们包含片段或质粒,那么我认为这将为您做到:

sed -ne '/^>/{/fragment/;b;/plasmid/b;p;}' one > outfile

它忽略所有不以 > 开头的行,如果找到片段或质粒,它会跳到脚本的末尾并转到下一行。

于 2013-04-10T15:39:35.670 回答