EOFから複数行改行を削除する方法は?

EOFから複数行改行を削除する方法は?

私のファイルは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とファイルの改行ではなく最後の文字の間に改行文字が必要です。

参照の実装

ファイルの内容を読み、最後に 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)

説明:もちろん、パイプがよりエレガントであれば許可されています。

ベストアンサー1

~からsed 便利な一行スクリプト

# Delete all trailing blank lines at end of file (only).
sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' file

おすすめ記事