У меня есть файлы, которые заканчиваются одним или несколькими символами новой строки и должны заканчиваться только одним символом новой строки. Как я могу сделать это с помощью инструментов 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)
Пояснение: Конечно, разрешается использовать трубопроводы, если это более элегантно.