我尝试了这个命令:
[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
请注意,使用 For old bash version 来避免 ewline 替换的引用space
可能是合适的:
printf "%s\n" "${string%%abab*}" "${string#*abab}"