有没有办法在Windows Perl中运行tr命令(或类似的东西)?

时间:2013-10-08 20:21:04

标签: perl shell

我有一行shell脚本需要重新创建Windows Perl的功能吗?

 tr -cd '[:print:]\n\r' | tr -s ' ' | sed -e 's/ $//'

sed部分很简单但不是shell脚本专家(或perl专家)我在Perl中重新创建tr命令的功能时遇到了麻烦。

1 个答案:

答案 0 :(得分:4)

将这些位分解为每个位并将其转换为Perl:

tr -cd '[:print:]\n\r'

获取可打印字符,换行符和回车符的补码(-c)并删除它们(-d)。 tr manpage告诉您每个人都做了哪些。

tr -s ' '

将多个相同的字符(-s)折叠为一个字符。

sed -e 's/ $//'

摆脱尾随空间。

现在只需使用您想要使用的任何语言即可。把它放在一起,你可能喜欢这样的东西:

perl -pe 's/\P{PosixPrint}//g; tr/ //s; s/ \z//;'

请注意,Perl的tr不会执行字符类,但我可以使用补充的(\P{...}使用大写的P)Unicode character class来执行相同的操作。 Perl字符类也理解常规的POSIX字符类。