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
我想从另一个跨平台程序中使用 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