如何在sed中匹配没有一些字符串的行

时间:2013-04-10 14:57:33

标签: regex linux sed

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

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

3 个答案:

答案 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

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