我想找一个字符串"Hello
(Hello 以双引号开头)在文本文件中使用ripgrep
.
通常,在 Bash 或 ZSH 中,这可以通过用反斜杠转义或用单引号括起来来实现:
rg \"Hello
rg '"Hello'
然而,在 MS Windows(Powershell 和 CMD)中,我尝试过这些,但这些都不起作用:
rg \"Hello
rg '"Hello'
rg `"Hello
rg '`"Hello'
有没有办法在 MS Windows 中使用 ripgrep 转义单引号或双引号?
逐字字符串"Hello
最终必须传递为\"Hello
to rg
("\"Hello"
也会起作用)。那是,逐字逐句"
字符。必须是\
-escaped:
From cmd.exe
:
rg \^"Hello
^
, cmd.exe
的转义字符,确保"
逐字处理并被删除cmd.exe
打电话之前rg
.
注意^
这里并不是绝对必要的,但它可以防止"
避免被视为双引号参数的开始,如果有其他参数,这可能会产生影响。
From 电源外壳:
rg \`"Hello
`
, PowerShell 转义字符,确保"
逐字处理并在调用之前被 PowerShell 删除rg
.
可以说,明确的\
- 逃避应该是没有必要的,因为在用户满足 shell 自己的转义要求(逐字转义)后,shell 有责任正确地将参数传递给目标可执行文件"
with ^
in cmd.exe
, 与`
在 PowerShell 中)。
在 PowerShell 的上下文中,这种有问题的行为总结为这个答案 https://stackoverflow.com/a/59036879/45375.
注意在 PowerShell 中,仅当您调用时才需要这种额外的转义外部程序;不需要 PowerShell-内部- 例如当你打电话时Select-String
,如图所示js2010 的回答 https://stackoverflow.com/a/59573870/45375.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)