如何用bash变量模式替换中的新行替换任何字符(例如“:”)?

时间:2014-04-24 04:30:42

标签: regex bash variables

我想替换":"使用变量模式替换在$ PATH中添加新行

echo ${PATH/:/"<WHAT TO PUT HERE>"}

我试过了:

echo ${PATH/:/"\n"}

但那不起作用

4 个答案:

答案 0 :(得分:1)

您可以像使用其他任何地方一样使用带引号的字符串。

echo "${PATH//:/
/}"

为提高易读性,请尝试以下方法:

echo "${PATH//:/$'\n'}"

(您可能希望在任何地方替换冒号,而不仅仅是第一次出现。因此,//不是/。)

答案 1 :(得分:1)

在替换中使用POSIX字符串($' ... ');它们支持C风格的反斜杠序列:

echo "${PATH//:/$'\n'}"

我使用了//代替/,因此它会替换所有冒号,而不仅仅是第一个冒号。

答案 2 :(得分:0)

我意识到这个问题已经更新,以排除这些解决方案,但我将其留在这里以供其他任何好奇的人使用。

使用sed

echo $PATH | sed 's/:/\n/g'

使用tr

echo $PATH | tr ':' '\n'

答案 3 :(得分:0)

这就是你需要的:

printf ${PATH//:/'\n'}