Тут корень проблемы в print > FILENAME
Ты построчно читаешь файл и туже в него пишешь.

Это идеологически не правильно: весь модифицированный поток надо сохранять отдельно, и тогда некоректные выходы программы не повлекут за собой нарушения целостности исходных данных.

В догонку, по аналогии, у sed есть возможность редактировать исходный файл с сохранением и без сохранения backup'a, но второй вариант не рекомендуется по тем же самым соображениям:

from `man sed`:

-I extension
Edit files in-place, saving backups with the specified extension.
If a zero-length extension is given, no backup will be saved. It
is not recommended to give a zero-length extension when in-place
editing files, as you risk corruption or partial content in situ‐
ations where disk space is exhausted, etc.

Ответить