我的文件以一个或多个换行符结尾,并且应该仅以一个换行符结尾。如何使用Bash / Unix / GNU工具做到这一点?
错误文件示例:
1\n
\n
2\n
\n
\n
3\n
\n
\n
\n
示例更正的文件:
1\n
\n
2\n
\n
\n
3\n
换句话说:EOF和文件的最后一个非换行符之间应该只有一个换行符。
参考实施
读取文件内容,切掉一个换行符,直到末尾再没有两个换行符,将其写回:
#! /bin/python
import sys
with open(sys.argv[1]) as infile:
lines = infile.read()
while lines.endswith("\n\n"):
lines = lines[:-1]
with open(sys.argv[2], 'w') as outfile:
for line in lines:
outfile.write(line)
澄清:当然,如果更优雅,则可以使用管道。