Bash에서 문자열의 문자열을 개행 문자(\n)로 바꿉니다.

Bash에서 문자열의 문자열을 개행 문자(\n)로 바꿉니다.

나는 다음 명령을 시도했습니다.

[silas@mars 11]$ string=xyababcdabababefab
[silas@mars 11]$ echo ${string/abab/"\n"}
xy\ncdabababefab
[silas@mars 11]$

또한 "\n"을 '\n' 및 \n으로 바꾸려고 했습니다. AWK나 sed를 사용할 수 없습니다(숙제 연습의 일부이고 교사는 이 특정 연습에 대해 이를 허용하지 않습니다).

답변1

ANSI C 스타일 이스케이프 시퀀스를 사용하여 줄 $'\n'바꿈을 나타냅니다.

$ string=xyababcdabababefab

$ echo "${string/abab/$'\n'}"
xy
cdabababefab

아니면 zsh그냥 사용 하십시오 \n:

% string=xyababcdabababefab

% echo "${string/abab/\n}"
xy
cdabababefab

답변2

당신은 사용해야합니다-e다음과 같이 echo:

echo -e ${string/abab/'\n'}

맨페이지에서:

-e     enable interpretation of backslash escapes

If -e is in effect, the following sequences are recognized:

\\     backslash

\a     alert (BEL)

\b     backspace

\c     produce no further output

\e     escape

\f     form feed

\n     new line

\r     carriage return

\t     horizontal tab

\v     vertical tab

답변3

위의 내용 외에도 개행 문자를 단독으로 사용할 수 있습니다.

echo "${string/abab/
}"

\newline 대체 참조를 피하기 위해 이전 bash 버전의 경우를 사용하는 space
것이 적절할 수 있습니다 .

printf "%s\n" "${string%%abab*}" "${string#*abab}"

관련 정보