删除与目录中多个文件中的模式匹配的某些行

时间:2015-12-04 01:09:30

标签: perl unix awk sed

我在名为.csv的目录中有多个mydirectory个文件。每个文件都包含以#GENE_ANNOTATIONS开头的行。我想删除此行之前的所有行,包括此行加上此行下面的一行。我希望将其应用于所有文件并保存。是否有任何unix / awk / perl命令来执行此操作?

2 个答案:

答案 0 :(得分:3)

使用GNU sed:

sed -i '0,/^#GENE_ANNOTATIONS/{/^#GENE_ANNOTATIONS/{N};d;}' mydirectory/*

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed -ni '/^#GENE_ANNOTATIONS/,$!b;n;n;:a;p;n;ba' mydirectory/*

只需启用-n开关即可打印所需的行。

另一种选择:

sed  '/^#GENE_ANNOTATIONS/,$!d;x;/./{g;b};x;h;N;d' mydirectory/*