Замініть канал рядка символом


0

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

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

Чому не можна отримати sa як результат?

Відповіді:


2

Від man echo:

-e включити інтерпретацію відхилень від косої риски

Вашим відлунням може бути вбудована оболонка (спробуйте type echo). Якщо так, використовуйте help echoзамість man echo. Але слід сказати те саме про -eваріант.

Без цього параметра \nрядок друкується буквально, а не як канал рядка. Повідомлення trне потребує спеціального варіанту для роботи, як ви очікували.

Фіксована команда:

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

Користувач Гордон Девіссон вказав на деякі речі. Вони здаються досить важливими, щоб включити їх у свою відповідь для подальшого ознайомлення. З цього моменту вся заслуга переходить до Гордона .

Різні версії echoдуже непослідовні щодо втечі та варіантів. Деякі будуть інтерпретувати послідовності втечі без -e. Деякі надрукують "-e" як частину своєї продукції. Деякі роблять… інші речі. Для таких речей використовуйте printfнатомість (як в printf "s\n"). Див. Специфікацію POSIXecho , особливо в розділі "Використання додатків".


1
Різні версії echoдуже непослідовних WTR- шляхів і варіантів. Деякі інтерпретуватимуть послідовності втечі без -e. Деякі надрукують "-e" як частину своєї продукції. Деякі роблять ... інші речі. Для таких речей використовуйте printfнатомість (як в printf "s\n"). Див. Специфікацію POSIXecho , особливо в розділі "Використання додатків".
Гордон Девіссон

@GordonDavisson Дякую Я цитував ваш коментар у своїй відповіді.
Каміль Маціоровський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.