从多个文本文件中删除段落

时间:2019-07-01 00:33:50

标签: python linux python-3.x iteration

假设我们有一个包含多个文本文件的目录。每个文本文件都有3个段落,用空白行分隔,如下所示:

Paragraph_1

段落_2

Paragraph_3

是否可以使用python脚本或UNIX命令(无需创建新文件)为每个文本文件删除Paragraph_1以下的所有内容? 如果有帮助,则每个文本文件的Paragraph_2均以相同的开头。

2 个答案:

答案 0 :(得分:3)

在POSIX shell中

for f in file1 file2; do
    sed -e '/^$/Q' "$f"
done

将每个文件的第一段打印到标准输出。 sed命令的第一部分/^$/是在空行上触发的标签,Q使sed退出以处理其他行。如果要保留空行,请使用q。如果要就地修改文件,请将-i标志传递给sed。

答案 1 :(得分:0)

使用python脚本,您可以找到要删除的内容,然后添加其他所有内容:

def m():
  with open("file.txt", "r+") as f:
    d = f.readlines()
    f.seek(0)
    f.truncate()
    lines_to_remove = []
    for i in d:
        if i != "Paragraph_2\n":
            lines_to_remove.append(i)
        else:
            break
    for i in d:
        print(i not in lines_to_remove)
        if(i not in lines_to_remove):
            f.write(i)