Mam pliki, które kończą się na jednej lub więcej linii i powinny kończyć się tylko na jednej linii. Jak mogę to zrobić za pomocą narzędzi Bash / Unix / GNU?
Przykład nieprawidłowego pliku:
1\n
\n
2\n
\n
\n
3\n
\n
\n
\n
Przykład poprawionego pliku:
1\n
\n
2\n
\n
\n
3\n
Innymi słowy: powinna istnieć dokładnie jedna nowa linia między EOF a ostatnim nie-nowym znakiem pliku.
Wdrożenie referencyjne
Odczytaj zawartość pliku, odetnij jedną nową linię, aż na końcu nie będą już więcej dwóch nowych linii, zapisz ją ponownie:
#! /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)
Wyjaśnienie: Oczywiście, orurowanie jest dozwolone, jeśli jest to bardziej eleganckie.