有没有办法在 ripgrep for MS Windows(Powershell 或 CMD)中转义引号?
Is there a way to escape quotes in ripgrep for MS Windows (Powershell or CMD)?
我想使用 ripgrep
.
在文本文件中查找字符串 "Hello
(Hello 以双引号开头)
通常,在 Bash 或 ZSH 中,这可以通过使用反斜杠转义或使用单引号括起来来实现:
rg \"Hello
rg '"Hello'
但是,在 MS Windows(Powershell 和 CMD)中,我尝试了这些,但其中 none 有效:
rg \"Hello
rg '"Hello'
rg `"Hello
rg '`"Hello'
有没有办法在 MS Windows 中使用 ripgrep 转义单引号或双引号?
逐字字符串 "Hello
最终必须作为 \"Hello
传递给 rg
("\"Hello"
也可以)。即,逐字 "
字符。必须 \
-转义:
来自cmd.exe
:
rg \^"Hello
^
、cmd.exe
的转义字符,确保 "
被逐字处理,并在调用 rg
之前被 cmd.exe
删除。
请注意,^
在这里不是绝对必要的,但它可以防止 "
被视为双引号参数的开头,如果有其他参数,这可能会有所不同。
来自 PowerShell:
rg \`"Hello
`
,PowerShell 的转义字符,确保 "
在调用 rg
.
之前被逐字处理并被 PowerShell 删除
可以说,显式 \
转义应该不是必需的,因为 shell 的职责是将参数正确传递给目标用户满足 shell 自己的转义要求后的可执行文件(在 cmd.exe
中使用 ^
逐字转义 "
,在 PowerShell 中使用 `
。
在 PowerShell 的上下文中, 中总结了这个有问题的行为。
请注意,在 PowerShell 中,仅当您调用 外部程序 时才需要这种额外的转义;它不需要 PowerShell- 内部 - 例如当您调用 Select-String
时,如 .
所示
如果您使用的是 powershell,您不妨这样做:
get-childitem file | select-string '"hello'
file:1:"hello
您可以使用rg -F \"Hello
-F, --fixed-strings
Treat the pattern as a literal string instead of a regular expression. When this flag is used, special regular expression meta characters such as .(){}*+ do not
need to be escaped.
This flag can be disabled with --no-fixed-strings.
我想使用 ripgrep
.
"Hello
(Hello 以双引号开头)
通常,在 Bash 或 ZSH 中,这可以通过使用反斜杠转义或使用单引号括起来来实现:
rg \"Hello
rg '"Hello'
但是,在 MS Windows(Powershell 和 CMD)中,我尝试了这些,但其中 none 有效:
rg \"Hello
rg '"Hello'
rg `"Hello
rg '`"Hello'
有没有办法在 MS Windows 中使用 ripgrep 转义单引号或双引号?
逐字字符串 "Hello
最终必须作为 \"Hello
传递给 rg
("\"Hello"
也可以)。即,逐字 "
字符。必须 \
-转义:
来自cmd.exe
:
rg \^"Hello
^
、cmd.exe
的转义字符,确保 "
被逐字处理,并在调用 rg
之前被 cmd.exe
删除。
请注意,^
在这里不是绝对必要的,但它可以防止 "
被视为双引号参数的开头,如果有其他参数,这可能会有所不同。
来自 PowerShell:
rg \`"Hello
`
,PowerShell 的转义字符,确保 "
在调用 rg
.
可以说,显式 \
转义应该不是必需的,因为 shell 的职责是将参数正确传递给目标用户满足 shell 自己的转义要求后的可执行文件(在 cmd.exe
中使用 ^
逐字转义 "
,在 PowerShell 中使用 `
。
在 PowerShell 的上下文中,
请注意,在 PowerShell 中,仅当您调用 外部程序 时才需要这种额外的转义;它不需要 PowerShell- 内部 - 例如当您调用 Select-String
时,如
如果您使用的是 powershell,您不妨这样做:
get-childitem file | select-string '"hello'
file:1:"hello
您可以使用rg -F \"Hello
-F, --fixed-strings
Treat the pattern as a literal string instead of a regular expression. When this flag is used, special regular expression meta characters such as .(){}*+ do not
need to be escaped.
This flag can be disabled with --no-fixed-strings.