에코로 줄 바꾸기 문자를 인쇄하는 방법은 무엇입니까?


15

나는 hexdump이런 식 으로 문자열을 덤프합니다 2031 3334 2e30 0a32 2032 3331 302e 000a. 0x0a줄 바꿈 문자 라는 것이 분명 하지만,이 문자열을 반향하려고하면 항상 1 430.2 2 13.0새 줄이 공백으로 바뀝니다 -e. 플래그를 사용합니다 .

무엇이 문제 일 수 있습니까? 광미 \0가 출력을 망칠까요? 0x0a새 줄 을 인쇄 할 수 있는 대안이 있습니까?

감사와 안부.


이 문자열을 반향하려고 할 때 정확히 어떻게합니까? 사용하는 정확한 명령은 무엇입니까?
Dennis

@Dennis 의미 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

여기서 "-e"매개 변수 중요합니다.


3
btw, 이것은 "echo -e ..."bash의 에코에 의존하여 올바르게 작동합니다 (예 : dash"-e"만 인쇄합니다). 그러나 '/ bin / echo'도 작동 할 수도 있고 작동하지 않을 수도 있습니다. 불행히도 (아마도 적절하게), 주위에 많은 에코가 있고, 어떤 에코를 얻을지 신경 쓰고 싶지 않습니다. 사용 'printf "....\n"은 환경과 셸에서보다 이식 가능한 옵션입니다.
마이클

사실 @michael_n 은 OP가 마침내 되돌려 놓은 것입니다 . 그러나이 질문은 "반향으로"명시 적으로 언급되었으므로이 방법으로 대답합니다. 어쨌든, 그것은 "Bash와 함께"가 아니 었습니다. 따라서 이러한 차이점을 지적 해 주셔서 감사합니다!
Izzy

5

POSIX 7은 할 수 없다고 말합니다

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

-e 정의되지 않았으며 백 슬래시는 구현 정의입니다.

첫 번째 피연산자가 -n이거나 피연산자 중 하나에 <backslash> 문자가 포함 된 경우 결과는 구현 정의됩니다.

선택적 XSI 확장이없는 한.

따라서 printf대신 사용하십시오.

형식 피연산자는 XBD 파일 형식 표기법 [...]에 설명 된 형식 문자열로 사용됩니다.

파일 형식 표기 :

\ n <newline> 인쇄 위치를 다음 줄의 시작 부분으로 이동하십시오.

또한 Ubuntu 15.10과 대부분의 배포판 echo은 다음과 같이 구현 됩니다.

  • 배쉬 내장 : help echo
  • 독립형 실행 파일 : which echo

혼동을 일으킬 수 있습니다.


2

마지막으로이 문자열의 형식을 올바르게 지정합니다 printf "$string". 모두 감사합니다.


당신이 $string말하는 것은 무엇입니까 ? 이것이 어떻게 질문과 관련이 있습니까? \n다른 두 답변에서 와 같이 포함되지 않은 것은 무엇입니까 ?
Peter Mortensen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.