我想从许多文件中删除段落的每个实例。我将段落称为一系列行。
例如:
my first line my second line my third line the fourth 5th and last
问题是我只想在它们作为一个组出现时删除它们。例如,如果
my first line单独出现,我不想删除它。
答案 0 :(得分:3)
@OP,我看到你接受了答案,你的段落句子是“难以理解的”,所以我假设那些段落总是一样的?这是真的,你可以使用grep
。将要删除的段落存储在文件中,例如“过滤器”,然后使用grep的-f
和-v
选项来完成这项工作,
grep -v -f filter file
答案 1 :(得分:1)
如果你能够使用Perl,你可以在一行中这样做:
perl -0777 -pe 's/my first line\nmy second line\nmy third line\nthe fourth\n5th and last\n//g' paragraph_file
解释在perlrun:
特殊值00将导致Perl在段落模式下粘贴文件。值0777将导致Perl整个文件,因为没有合法的字节具有该值。
示例输入:
my first line
my second line
my third line
the fourth
5th and last
hey
my first line
my second line
my third line
the fourth
5th and last
hello
my first line
输出:
$ perl -0777 -pe 's/my first line\nmy second line\nmy third line
\nthe fourth\n5th and last\n//g' paragraph_file
hey
hello
my first line
答案 2 :(得分:0)
你可以用sed:
来做sed '$!N; /^\(.*\)\n\1$/!P; D' file_to_filter