替换 : 用 \n 使用 sed

jos*_*erk 3 unix command-line

我正在尝试在命令行中输出我的 $PATH,但也使用以下命令将 : 替换为 \n:

echo $PATH | sed s/:/\n/g
Run Code Online (Sandbox Code Playgroud)

这不能 100% 工作,我该如何让它工作?

mpy*_*mpy 5

你需要转义反斜杠,即

echo $PATH | sed s/:/\\n/g
Run Code Online (Sandbox Code Playgroud)

或者,正如 BatchyX 指出的那样

echo $PATH | tr ':' '\n'
Run Code Online (Sandbox Code Playgroud)

另一种可能,如果你想解析$PATH,你也可以使用

IFS=:
for i in $PATH; do
   echo $i
done
Run Code Online (Sandbox Code Playgroud)

HereIFS=:告诉bash在 处拆分字符串:。请注意,这也会改变当前会话中的其他内容。摘自man bash

IFS 内部字段分隔符,用于在扩展后进行分词,并使用 read 内置命令将行拆分为单词。默认值为<space><tab><newline>