Як надрукувати новий символ рядка за допомогою відлуння?


15

Я скидаю рядок hexdumpтаким чином 2031 3334 2e30 0a32 2032 3331 302e 000a. Зрозуміло, що 0x0aце новий символ рядка, однак, коли я намагаюся відлучити цей рядок, я завжди отримував 1 430.2 2 13.0- новий рядок замінюється пробілом, навіть я використовую -eпрапор.

У чому може бути проблема? Чи пошкоджує \0хвостик вихід? Чи є альтернативи для друку 0x0aнового рядка?

Дякую і всього найкращого.


коли я намагаюсь відлучити цю струну. Як саме це робити? Яку точну команду ви використовуєте?
Денніс

@ Денніс я маю на увазі echo -e. Дякую, я знаходжу рішення.
Summer_More_More_Tea

1
кращим рішенням є просто використовувати printf "...\n"замість цього echo.
Майкл

Відповіді:


26

Новий символ рядка з echoкомандою "\ n". Беручи такий приклад:

echo -e "This is line 1\nThis is line 2"

Це призведе до результату

This is line 1
This is line 2

«-Е» параметр є важливим тут.


3
btw, це "echo -e ..."покладається на відлуння bash для коректної роботи (наприклад, dashбуде просто надрукувати "-e"); але "/ bin / echo" також може (або не може) працювати. На жаль (можливо, належним чином) навколо є багато відлуння, і вам не дуже хочеться дбати про те, до якого ви збираєтесь дістатися. Використання 'printf "....\n"- це більш портативний варіант для env's та оболонок.
Майкл

@michael_n - це те, на що нарешті повернулася і ОП . Але питання чітко говорило "з відлунням" - звідси моя відповідь таким чином. Як би там не було "з Башем" - тож дякую за те, що ти вказав на ці відмінності!
Іззі

5

POSIX 7 говорить, що ви не можете

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html

-e не визначено і зворотні косої риси визначено реалізацією:

Якщо перший операнд дорівнює -n, або якщо будь-який з операндів містить символ <зворотна коса>, результати визначаються реалізацією.

якщо ви не маєте додаткового розширення XSI.

Тож використовуйте printfзамість цього:

Операнд формату використовуватиметься як рядок формату, описаний у нотації про формат файлу XBD [...]

Формат файлу нотація :

\ n <newline> Перемістіть позицію друку на початок наступного рядка.

Також пам’ятайте, що Ubuntu 15.10 та більшість дистрибутивів реалізують echoяк:

  • вбудований Bash: help echo
  • автономний виконуваний файл: which echo

що може призвести до певної плутанини.


2

Я, нарешті, правильно відформатую цей рядок printf "$string". Дякую всім.


Про що це $stringви говорите? Як це пов’язано з питанням? Що це не передбачає, \nяк у двох інших відповідях?
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.