假设我们有一个包含多个文本文件的目录。每个文本文件都有3个段落,用空白行分隔,如下所示:
Paragraph_1
段落_2
Paragraph_3
是否可以使用python脚本或UNIX命令(无需创建新文件)为每个文本文件删除Paragraph_1以下的所有内容? 如果有帮助,则每个文本文件的Paragraph_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)