【发布时间】:2014-04-24 04:30:42
【问题描述】:
我想使用变量模式替换在 $PATH 中用新行替换“:”
echo ${PATH/:/"<WHAT TO PUT HERE>"}
我试过了:
echo ${PATH/:/"\n"}
但这不起作用
【问题讨论】:
我想使用变量模式替换在 $PATH 中用新行替换“:”
echo ${PATH/:/"<WHAT TO PUT HERE>"}
我试过了:
echo ${PATH/:/"\n"}
但这不起作用
【问题讨论】:
您可以像在其他任何地方一样使用带引号的字符串。
echo "${PATH//:/
/}"
为了提高可读性,试试这个:
echo "${PATH//:/$'\n'}"
(您可能希望在任何地方都替换冒号,而不仅仅是第一次出现。因此,// 而不是/。)
【讨论】:
在替换中使用 POSIX 字符串 ($'...');它们支持 C 风格的反斜杠序列:
echo "${PATH//:/$'\n'}"
我使用了// 而不是/,这样它将替换所有冒号,而不仅仅是第一个。
【讨论】:
${parameter/pattern/string} The pattern is expanded to produce a pattern just as in filename expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. If pattern begins with ‘/’, all matches of pattern are replaced with string.
我意识到问题已被更新以排除这些解决方案,但我将它们留在这里供任何好奇的人使用。
使用sed:
echo $PATH | sed 's/:/\n/g'
使用tr:
echo $PATH | tr ':' '\n'
【讨论】:
这就是你需要的:
printf ${PATH//:/'\n'}
【讨论】: