从每个起点删除N行

我将如何删除从我看到的单词的每个实例开始的6行?

我认为这个sed命令会做你想做的事情:

sed '/bar/,+5d' input.txt 

它删除任何包含文本栏的行以及以下五行。

运行如上查看输出。 当您知道它正在正常工作时,请使用开关--in-place=.backup来实际执行更改。

这个简单的perl脚本将删除包含单词“DELETE6”和连续5行(共6个)的每一行。 它还保存FILENAME.bak中以前版本的文件。 运行脚本:

perl script.pl FILE_TO_CHANGE

 #!/usr/bin/perl use strict; use warnings; my $remove_count = 6; my $word = "DELETE6"; local $^I = ".bak"; my $delete_count = 0; while (<>) { $delete_count = $remove_count if /$word/; print if $delete_count <= 0; $delete_count--; } 

HTH

 perl -i.bak -n -e '$n ++; $n = -5 if /foo/; print if $n > 0' data.txt 
 perl -ne 'print unless (/my_word/ and $n = 1) .. ++$n == 7' 

请注意,如果my_word出现在跳过的行中,则计数器将不会被重置。