s:$:__:
s:...:& :g
s: _*$::
Попробуйте онлайн!
С вводом пустой строки становится немного сложнее, так как sed не имеет значения ложного значения. Поэтому, чтобы справиться с этим, я предоставлю вам две возможные интерпретации правил для подтверждения моего представления:
О. Вы, по сути, ничего не предоставляете в качестве входных данных, даже завершающий перевод строки (как это имеет место со всеми примерами, включая этот файл размером 6 Мб).
Использование:
echo -n ""|sed -f script
Вывод: ничего не печатается, потому что sed даже не запускает скрипт без ввода.
B. Можно считать ложным значением для sed уникальную строку, т. Е. Возвращаемую только в том случае, если вход является пустой строкой.
Использование:
echo ""|sed -f script
Выход:
__
Я предпочитаю первое толкование гораздо больше, так как считаю, что оно наиболее близко к намеченному правилу, но последнее поможет, если вы запустите скрипт, используя эту ссылку TIO.