Saya memiliki file yang diakhiri dengan satu atau lebih baris baru dan harus berakhir hanya dalam satu baris baru. Bagaimana saya bisa melakukannya dengan alat Bash / Unix / GNU?
Contoh file buruk:
1\n
\n
2\n
\n
\n
3\n
\n
\n
\n
Contoh file yang diperbaiki:
1\n
\n
2\n
\n
\n
3\n
Dengan kata lain: Harus ada tepat satu baris baru antara EOF dan karakter non-baris terakhir file.
Implementasi Referensi
Baca konten file, potong satu baris baru sampai tidak ada dua baris lagi di akhir, tulis kembali:
#! /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)
Klarifikasi: Tentu saja, perpipaan diperbolehkan, jika itu lebih elegan.