1つ以上の改行で終わるファイルがあり、1つの改行のみで終わる必要があります。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とファイルの最後の非改行文字との間に改行が1つだけあるはずです。
参照実装
ファイルの内容を読み取り、最後にさらに2つの改行がなくなるまで1つの改行を切り取り、書き戻します。
#! /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)
明確化:もちろん、それがよりエレガントであれば、パイピングは許可されます。