按特殊字符 grep ”
grep by special character ”
如何使用特殊字符 ”
grep 文件注意与 "
不同
我试过转义它但没用。
当我用 vim 打开文件时,它显示为 <94>
文件示例
<p>"hello”></p>
我希望能够grep -rne "\”"
使用现代 GNU grep
和正确配置的语言环境,这应该可以正常工作。
如果您的 grep
不熟悉 8 位或您的语言环境被破坏,也许可以尝试
perl -ne 'print if /\x94/' files ...
在 Perl 中重新实现 grep -rn
并不难,但如果这是一个快速 one-off,请尝试
find . -type f -exec perl -ne 'print "$ARGV:$.:$_" if /\x94/' {} +
从某种意义上说,如果 \x94
显示为弯引号,则您的语言环境 是 的,或者至少是不标准的。您的系统显然配置为使用一些遗留 Windows 8 位编码...?
大引号不是 shell 或正则表达式元字符,因此不需要反斜杠。
在更多细节中,根据评论,根本问题是您的系统设置为使用 UTF-8,但文件使用不同的编码。所以 grep "”"
真正搜索 U+201D 的 UTF-8 编码,它转换为 perl -ne 'print if /\xe2\x80\x9d/'
如果你不知道字符的字节值,但知道编码,你可以这样做
echo "”" | iconv -f utf-8 -t ENCODING | grep -f -
当然,你可以通过类似的方式轻松获取字节值;
echo "”" | iconv -f utf-8 -t ENCODING | xxd
或者只是在像 less
这样的工具中查看文件,它以十六进制显示未知字节。
也许还可以参见 https://tripleee.github.io/8bit#9d——只有一个字节,文件使用哪种精确编码并不重要(如果它是 HTML,HTML 中的默认值令人困惑的是,5 是 Windows 代码页 1252),但如果您有一些未知字节,您知道或可以猜测预期的呈现,这个 table 可以帮助您建立精确的编码。
如果您的 grep
不懂 8 位,也许您使用的是来自 Retrocomputing 博物馆的设备。如果您的语言环境很奇怪,也许可以解决这个问题 - 理想情况下您想要 UTF-8 everywhere.
如何使用特殊字符 ”
grep 文件注意与 "
我试过转义它但没用。
当我用 vim 打开文件时,它显示为 <94>
文件示例
<p>"hello”></p>
我希望能够grep -rne "\”"
使用现代 GNU grep
和正确配置的语言环境,这应该可以正常工作。
如果您的 grep
不熟悉 8 位或您的语言环境被破坏,也许可以尝试
perl -ne 'print if /\x94/' files ...
在 Perl 中重新实现 grep -rn
并不难,但如果这是一个快速 one-off,请尝试
find . -type f -exec perl -ne 'print "$ARGV:$.:$_" if /\x94/' {} +
从某种意义上说,如果 \x94
显示为弯引号,则您的语言环境 是 的,或者至少是不标准的。您的系统显然配置为使用一些遗留 Windows 8 位编码...?
大引号不是 shell 或正则表达式元字符,因此不需要反斜杠。
在更多细节中,根据评论,根本问题是您的系统设置为使用 UTF-8,但文件使用不同的编码。所以 grep "”"
真正搜索 U+201D 的 UTF-8 编码,它转换为 perl -ne 'print if /\xe2\x80\x9d/'
如果你不知道字符的字节值,但知道编码,你可以这样做
echo "”" | iconv -f utf-8 -t ENCODING | grep -f -
当然,你可以通过类似的方式轻松获取字节值;
echo "”" | iconv -f utf-8 -t ENCODING | xxd
或者只是在像 less
这样的工具中查看文件,它以十六进制显示未知字节。
也许还可以参见 https://tripleee.github.io/8bit#9d——只有一个字节,文件使用哪种精确编码并不重要(如果它是 HTML,HTML 中的默认值令人困惑的是,5 是 Windows 代码页 1252),但如果您有一些未知字节,您知道或可以猜测预期的呈现,这个 table 可以帮助您建立精确的编码。
如果您的 grep
不懂 8 位,也许您使用的是来自 Retrocomputing 博物馆的设备。如果您的语言环境很奇怪,也许可以解决这个问题 - 理想情况下您想要 UTF-8 everywhere.