특수 문자를 텍스트 편집기에서 보려면 어떻게 평가해야 합니까?

특수 문자를 텍스트 편집기에서 보려면 어떻게 평가해야 합니까?

"line1\n\nline2\nline3"이라는 텍스트가 있고 이를 콘솔에서 보거나 텍스트 편집기로 파이프하려고 한다고 가정해 보겠습니다.

line1

line2
line3

따라서 특수 문자가 평가됩니다. 정규식을 바꾸지 않고 이 작업을 수행할 수 있나요?

답변1

Bash에는 백슬래시 확장 printf기능이 내장되어 있으며, 인용되지 않은 셸 명령에서 사용할 수 있도록 문자열 형식 지정을 지원합니다(예: 셸에서 특별히 백슬래시로 처리하는 모든 문자를 이스케이프 처리함).%b%q

즉, Bash에서는 다음을 사용할 수 있습니다.

printf '%b\n' 'line1\n\nline2\nline3'

얻기 위해

line1

line2
line3

뒤에 줄 바꿈을 원하지 않으면 line3대신 사용하십시오 printf '%b' 'line1\n\nline2\nline3'.

역함수( %q)도 유용합니다.

printf '%q' '(foo $bar baz]'

산출

\(foo\ \$bar\ baz\]

다음과 같이 백슬래시가 포함된 문자열을 포함하는 Bash 변수가 있는 경우

myvar='line1\n\nline2\nline3'

확장된 이스케이프 시퀀스를 사용할 수 있습니다.

mytext=$(printf '%b' "$myvar")

이스케이프 시퀀스가 ​​포함된 리터럴 문자열만 지정하려면 다음을 사용하세요 $''.

mytext=$'line1\n\nline2\nline3'

답변2

인라인 에코를 사용하십시오.

$ echo -e "line1\n\nline2\nline3"
line1

line2
line3

관련 정보