https://docs.python.org/3/library/calendar.html#calendar.month_name命令可转换,删除或压缩标准输入中的字符。我正在尝试创建一个输出tr命令的cshell alias,以使路径中的每个文件或目录都显示在新行上。
换句话说,我希望此示例输出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\'' '
这些是我尝试返回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\'' '
这些是我尝试过的别名,它们返回字符串"setenv"
。
alias readEnv 'echo setenv | tr "[:;]" '\'\\\n\'' '
alias readEnv 'echo "setenv" | tr "[:;]" '\'\\\n\'' '
如何创建一个别名,该别名成功获取setenv
的输出,并在其中有“:”或“;”的地方插入换行符?
答案 0 :(得分:1)
要替换(unix / linux)命令行别名中的多个字符,您应该使用sed和正则表达式,如Search and replace with sed when dots and underscores are present中所示。
就像这样:
sed 's/\.\|,/\\n/g'
其中\.
找到一个点(需要转义,需要找到任何字符),\|
是or运算符,也转义了,并且新行还必须具有其{{1}逃脱了。