Bash - 带分隔符的单行回声

时间:2015-08-10 20:37:35

标签: linux bash ubuntu delimiter delimited-text

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

#!/bin/bash

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

我希望能够回应它,使它看起来如下:

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

但问题是,当我尝试使用AWK,sed或IFS时,他们也使用\n作为分隔符,我不希望这种情况发生,因为文本全部搞砸了。无论如何,我可以将;作为分隔符并忽略\n

我在看this。但不幸的是,这些解决方案都不适合我。

非常感谢任何帮助!

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

另一个选择是使用$'...'

定义字符串
$ 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
==========

答案 2 :(得分:0)

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

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

---

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