私は次のコマンドを試しました。
[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}"