Get UnxUtils tr.exe for Windows 像带有字符转义的 Unix tr 一样工作

Get UnxUtils tr.exe for Windows work like the Unix tr with character escaping

我想从另一个跨平台程序中使用 UnxUtils tr.exe 程序,就像在 Unix 下一样,但我无法让它工作,问题是转义。这是一个例子。

创建一个文件 blah.txt,内容为

%^&<>|'`,;=()!\"\[].*?

然后

type blah.txt | tr.exe "*" "X"

tr.exe: extra operand `blah.txt' Try `tr.exe --help' for more information.

问题是 Windows 将 * 扩展到目录中的文件。但是在 Unix 下这是没有问题的。无论我怎么尝试,我都无法在 Windows 下正确转义 *。与引号“类似。即使我能弄清楚如何正确重写转义,将此更正应用于一组字符也会一团糟。

我设法让 UnxTools sed.exe 始终如一地工作,因为在这里我可以使用带有 -f 选项的程序文件,这样我就不需要转义了。

有什么想法吗?

问题是 Windows (CMD.EXE) 没有展开 *。曾经。这就是为什么逃避不会解决它。这就是 dir /s *.txt 可以在子目录中找到文本文件的方式。如果 *.txt 在您当前所在的目录中展开,它将不起作用。

这就是 Windows 工具需要处理 * 的原因。显然 tr.exe 弄错了。

使用 * 时处理文件通配的一些简单的可移植方法(顺便说一句,MSalters 指出它不是 windows 功能)

type blah.txt | tr.exe  X
type blah.txt | tr.exe [=*=] X