如何同时替换“:”和“;”用换行符?

How do I simultaneously replace ":" and ";" with a newline?

背景

tr command translates, delete, or squeezes characters from standard input. I am trying to create a cshell alias that outputs the setenv命令使路径中的每个文件或目录都显示在新行上。

换句话说,我想要这个示例输出 setenv:

PATH=/some/dir:/some/second/dir:/some/third/dir

PROFILES= file:///some/file/here.txt;file:///some/second/file.xml;file:///some/third/file/there.pl

变成这样:

PATH= /some/dir

/some/second/dir

/some/third/dir

PROFILES= file:///some/file/here.txt

file:///some/second/file.xml

file:///some/third/file/there.pl

有效的相关别名

我已经创建了输出个别环境变量的别名,如上:

  1. 对于路径: alias readablePath = 'echo "$PATH" | tr : '\'\\n\'' '
  2. 对于配置文件: alias readableProfiles= 'echo "$PROFILES" | tr \; 'echo "$PATH" | tr : '\'\\n\'' '

尝试的别名无效

这些是我试过的别名 return tr: no match.

  1. alias readEnv 'echo "setenv" | tr [:\;] '\'\\n\'' '
  2. alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
  3. alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
  4. alias readEnv 'echo setenv | tr [:;] '\'\\n\'' '

这些是我试过的别名 return 字符串 "setenv".

  1. alias readEnv 'echo setenv | tr "[:;]" '\'\\n\'' '
  2. alias readEnv 'echo "setenv" | tr "[:;]" '\'\\n\'' '

问题

如何创建一个别名来成功获取 setenv 的输出并在有“:”或“;”的地方插入换行符?

要替换 (unix/linux) 命令行别名中的多个字符,您应该使用 sed 和正则表达式,如 Search and replace with sed when dots and underscores are present .
所以像这样:

sed 's/\.\|,/\n/g'

其中\.找到一个点(需要转义,否则找到任何字符),\|是or操作,也转义,新行也必须有它的\逃脱了。