Заменить перевод строки символом

771
it_is_a_literature

Я хочу заменить \ n символом.

echo -n "s\n" |tr "\n" "a" s\n 

Почему нельзя получить sa в результате?

0

1 ответ на вопрос

2
Kamil Maciorowski

От man echo:

-e включить интерпретацию обратной косой черты

Ваше эхо может быть встроенным в оболочку (попробуйте type echo). Если так, используйте help echoвместо man echo. Но это должно сказать то же самое о -eварианте.

Без этой опции \nстрока печатается буквально, а не как перевод строки. Уведомление не trтребует специальной опции, чтобы работать так, как вы ожидаете.

Исправлена ​​команда:

echo -ne "s\n" | tr "\n" "a" 

Товарищ пользователь Гордон Дэвиссон указал на некоторые вещи. Они кажутся достаточно важными, чтобы включить их в мой ответ для дальнейшего использования. С этого момента вся заслуга Гордона .

Различные версии echoочень противоречивы в отношении побегов и опций. Некоторые будут интерпретировать escape-последовательности без -e. Некоторые выводят «-e» как часть своего вывода. Некоторые делают ... другие вещи. Для таких вещей используйте printfвместо этого (как в printf "s\n"). См. Спецификацию POSIXecho, особенно в разделе «Использование приложения».

Различные версии `echo` очень противоречивы по отношению к выходам и опциям. Некоторые интерпретируют escape-последовательности без `-e`. Некоторые выводят «-e» как часть своего вывода. Некоторые делают ... другие вещи. Для подобных вещей используйте взамен `printf` (как в` printf "s \ n" `). См. [Спецификацию POSIX для `echo`] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html), особенно раздел" Использование приложения ". Gordon Davisson 7 лет назад 1
@GordonDavisson Спасибо. Я процитировал ваш комментарий в моем ответе. Kamil Maciorowski 7 лет назад 0