Bir veya daha fazla yeni satırda biten ve yalnızca bir yeni satırda bitmesi gereken dosyalarım var. Bash / Unix / GNU araçlarıyla bunu nasıl yapabilirim?
Örnek kötü dosya:
1\n
\n
2\n
\n
\n
3\n
\n
\n
\n
Örnek düzeltilmiş dosya:
1\n
\n
2\n
\n
\n
3\n
Başka bir deyişle: EOF ile dosyanın son olmayan yeni satır karakteri arasında tek bir satır olmalıdır.
Referans uygulaması
Dosya içeriğini okuyun, sonunda yeni bir satır ekleninceye kadar tek bir satırsonu kesin, geri yazın:
#! /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)
Açıklama: Tabii ki, daha şıksa, borulara izin verilir.