Bash - 带分隔符的单行回显

Bash - one-liner echo with delimiter

到目前为止,我的示例代码如下所示:

#!/bin/bash

mysampletxt="=======\nTest\n-------;----------\nDone Test\n=========="

我希望能够将其回显出来,使其看起来像下面这样:

=======
Test
-------
Some code goes here
More code
----------
Done Test
==========

但问题是,当我尝试使用 AWK、sed 或 IFS 时,它们也使用 \n 作为分隔符,我不希望这种情况发生,因为文本会变得一团糟。无论如何我可以包括 ; 作为分隔符并忽略 \n?

我在看 this。但不幸的是,这些解决方案中有 none 对我有用。

如有任何帮助,我们将不胜感激!

编辑:更多说明:我想做的是将mysampletxt;字符分成两部分..并且能够将拆分文本的第一部分插入一个地方第二个变成另一个。

echo -e "${mysampletxt%;*}\nSome code goes here\nMore code\n${mysampletxt#*;}"

printf "%b" "${mysampletxt%;*}\nSome code goes here\nMore code\n${mysampletxt#*;}"

如果你可以使用 awk 或 sed 以外的东西(可能有点矫枉过正):

[ap@localhost ~]$ perl -e 'print "===\n\n---\n\n;"'
===

---

;[ap@localhost ~]$python -c "print ' ====\n====\n;'"
 ====
====
;

另一种选择是用 $'...':

定义字符串
$ mysampletxt=$'=======\nTest\n-------;\n----------\nDone Test\n=========='
$ echo "$mysampletxt"
=======
Test
-------;
----------
Done Test
==========

也做替换:

$ echo "${mysampletxt/;/$'\nSome code goes here\nMore code'}"
=======
Test
-------
Some code goes here
More code
----------
Done Test
==========