如何从我看到的单词的每个实例开始删除6行?
答案 0 :(得分:5)
我认为这个sed命令会做你想要的:
sed '/bar/,+5d' input.txt
删除包含文本bar
以及以下五行的任何行。
按上述方式运行以查看输出。如果您知道它正常工作,请使用开关--in-place=.backup
来实际执行更改。
答案 1 :(得分:3)
这个简单的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
答案 2 :(得分:1)
perl -i.bak -n -e '$n ++; $n = -5 if /foo/; print if $n > 0' data.txt
答案 3 :(得分:0)
perl -ne 'print unless (/my_word/ and $n = 1) .. ++$n == 7'
请注意,如果跳过的行中出现my_word
,则不会重置计数器。