我在
Windows中有这个命令行输入:
dir /b | ruby -ne 'f=$_.chomp;File.read(f).each_line{|line| print f if line =~ /helloworld/};'
这一行是在当前目录下找到helloworld的所有文件. (我知道还有很多其他方法可以做到这一点,但帖子并没有关注那个)
我的问题是:
此行给出错误,说明行不是有效命令.然后我意识到了在Ruby中作为块变量的括号是cmd中的管道符号.我试图将整行改为双引号并转义|签字但没有成功.如何逃离垂直条|?
请不要回答其他方法来执行任务,例如使用其他工具,如grep,find,sed或awk,或将块更改为for循环.
解决方法
我找到了
this microsoft.com page关于管道和特殊字符的说明:
The ampersand (&),pipe (|),and parentheses ( ) are special characters that must be preceded by the escape character (^) or quotation marks when you pass them as arguments.