Tôi có các tệp kết thúc bằng một hoặc nhiều dòng mới và chỉ nên kết thúc bằng một dòng mới. Làm thế nào tôi có thể làm điều đó với các công cụ Bash / Unix / GNU?
Ví dụ tập tin xấu:
1\n
\n
2\n
\n
\n
3\n
\n
\n
\n
Ví dụ sửa tệp:
1\n
\n
2\n
\n
\n
3\n
Nói cách khác: Cần có chính xác một dòng mới giữa EOF và ký tự không phải dòng mới cuối cùng của tệp.
Thực hiện tham khảo
Đọc nội dung tập tin, cắt bỏ một dòng mới cho đến khi không còn hai dòng mới ở cuối, viết lại:
#! /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)
Làm rõ: Tất nhiên, đường ống được cho phép, nếu điều đó thanh lịch hơn.