Вы используете оператор добавления (>>
), который добавляет к рассматриваемому файлу. При этом, как правило, вы не можете работать и выводить в один и тот же файл с >
в bash. Для конкретного случая sed
вы можете использовать параметр -i
(в зависимости от версии и платформы):
sed -i G $input_file
Это должно редактировать ваш файл "на месте", если ваша версия имеет эту опцию. Я говорю «на месте», потому что я почти уверен, что на самом деле создает новый файл и перемещает его поверх первого для вас (инод отличается). Если нет, вы бы вывели в отдельный файл и переместили его обратно:
sed G ${input_file} > ${input_file}.bak
mv ${input_file}.bak ${input_file}