Это sed , который вводит новые строки после "нормальной" замены. Сначала он обрезает символ новой строки, затем обрабатывает в соответствии с вашими инструкциями, затем вводит новую строку.
Используя sed , вы можете заменить «конец» строки (не символ новой строки) после обрезки выбранной строкой для каждой строки ввода; но sed выведет разные строки. Например, предположим, что вы хотели заменить «конец строки» на «===» (более общий, чем замена на один пробел):
PROMPT~$ cat <<EOF |sed 's/$/===/g'
first line
second line
3rd line
EOF
first line===
second line===
3rd line===
PROMPT~$
Чтобы заменить символ новой строки на строку, вы можете, хотя и неэффективно, использовать tr , как указано выше, чтобы заменить символы новой строки на "специальный символ", а затем использовать sed , чтобы заменить этот специальный символ на нужную вам строку.
Например:
PROMPT~$ cat <<EOF | tr '\n' $'\x01'|sed -e 's/\x01/===/g'
first line
second line
3rd line
EOF
first line===second line===3rd line===PROMPT~$