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
==========
到目前为止,我的示例代码如下所示:
#!/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
==========