나는 다음 명령을 시도했습니다.
[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/
}"
\n
ewline 대체 참조를 피하기 위해 이전 bash 버전의 경우를 사용하는 space
것이 적절할 수 있습니다 .
printf "%s\n" "${string%%abab*}" "${string#*abab}"