Как напечатать символ новой строки с помощью echo?


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
Кстати, это "echo -e ..."зависит от эхо Bash для правильной работы (например, dashпросто напечатать "-e"); но '/ bin / echo' также может (или не может) работать. К сожалению (возможно, уместно), вокруг много эхо, и вам не очень важно заботиться о том, какой вы получите. Использование 'printf "....\n"является более переносимым вариантом для env и оболочек.
Майкл

@michael_n - это то, что ОП наконец-то тоже изменило . Но вопрос был явно сформулирован «с эхом» - отсюда и мой ответ таким образом. Во всяком случае, это было не «с Bash» - так что спасибо за указание на эти различия!
Иззи

4

POSIX 7 говорит, что вы не можете

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

-e не определяется, и обратные слэши определяются реализацией:

Если первый операнд -n или если какой-либо из операндов содержит символ <backslash>, результаты определяются реализацией.

если у вас нет дополнительного расширения 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.