gpt4 book ai didi

powershell - 有没有办法在 ripgrep 中为 MS Windows(Powershell 或 CMD)转义引号?

转载 作者:行者123 更新时间:2023-12-03 18:35:05 26 4
gpt4 key购买 nike

我想找一个字符串 "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 传递至 rg ( "\"Hello" 也可以)。即,逐字逐句"字符。必须是 \ -逃脱 :

来自 cmd.exe :

rg \^"Hello
^ , cmd.exe的转义字符,确保 "逐字处理并被 cmd.exe 删除调用前 rg .
请注意 ^这里不是绝对必要的,但它可以防止 "从被视为双引号参数的开始,如果有其他参数,这可能会有所不同。

来自 PowerShell :
rg \`"Hello
` ,PowerShell 的转义字符,确保 "逐字处理并在调用 rg 之前被 PowerShell 删除.

可以说,显式 \ - 不需要转义 ,因为在用户满足 shell 自己的转义要求后,shell 有责任将参数正确传递给目标可执行文件(逐字转义 "^cmd.exe 中,并在 PowerShell 中与 ` 转义) .

在 PowerShell 的上下文中,此问题行为在 this answer 中进行了总结。 .

请注意 在 PowerShell 中,只有在调用外部程序时才需要这种额外的转义 ; PowerShell 内部不需要它 - 例如当您调用 Select-String 时,如图 js2010's answer .

关于powershell - 有没有办法在 ripgrep 中为 MS Windows(Powershell 或 CMD)转义引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59569846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com