如何同时替换“:”和“;”用换行符?
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
有效的相关别名
我已经创建了输出个别环境变量的别名,如上:
- 对于路径:
alias readablePath = 'echo "$PATH" | tr : '\'\\n\'' '
- 对于配置文件:
alias readableProfiles= 'echo "$PROFILES" | tr \; 'echo "$PATH" | tr : '\'\\n\'' '
尝试的别名无效
这些是我试过的别名 return tr: no match
.
alias readEnv 'echo "setenv" | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:;] '\'\\n\'' '
这些是我试过的别名 return 字符串 "setenv"
.
alias readEnv 'echo setenv | tr "[:;]" '\'\\n\'' '
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操作,也转义,新行也必须有它的\
逃脱了。
背景
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
有效的相关别名
我已经创建了输出个别环境变量的别名,如上:
- 对于路径:
alias readablePath = 'echo "$PATH" | tr : '\'\\n\'' '
- 对于配置文件:
alias readableProfiles= 'echo "$PROFILES" | tr \; 'echo "$PATH" | tr : '\'\\n\'' '
尝试的别名无效
这些是我试过的别名 return tr: no match
.
alias readEnv 'echo "setenv" | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:\;] '\'\\n\'' '
alias readEnv 'echo setenv | tr [:;] '\'\\n\'' '
这些是我试过的别名 return 字符串 "setenv"
.
alias readEnv 'echo setenv | tr "[:;]" '\'\\n\'' '
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操作,也转义,新行也必须有它的\
逃脱了。