我将如何删除从我看到的单词的每个实例开始的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
出现在跳过的行中,则计数器将不会被重置。