Unix 是否有Grep命令来Grep井号(£;),多个Grep选项都没有尝试过
已经尝试了多种grep选项,但尚未得到任何结果,非常感谢您的快速帮助Unix 是否有Grep命令来Grep井号(£;),多个Grep选项都没有尝试过,unix,grep,Unix,Grep,已经尝试了多种grep选项,但尚未得到任何结果,非常感谢您的快速帮助 grep -R '\£{' file | wc -l grep -Fn '\£{' file | wc -l 示例输入文件: £{334689900abcdefghij£{klmnopqrstuvwx hextump-c文件 0000000 a3 7b 33 33 34 36 38 39 39 30 30 61 62 63 64 65 |.{334689900abcde| 0000010 66 67 68 69 6a
grep -R '\£{' file | wc -l
grep -Fn '\£{' file | wc -l
示例输入文件:
£{334689900abcdefghij£{klmnopqrstuvwx
hextump-c文件
0000000 a3 7b 33 33 34 36 38 39 39 30 30 61 62 63 64 65 |.{334689900abcde|
0000010 66 67 68 69 6a a3 7b 6b 6c 6d 6e 6f 70 71 75 73 |fghij.{klmnopqus|
0000020 74 75 76 77 78 |tuvwx|
总结
源文件的字符集似乎与操作系统的字符集不同。您需要使用诸如iconv
之类的实用程序来转换源文件以匹配操作系统
细节
您的hextump-C
输出将磅符号显示为A3
。这与Windows系统上常见的ISO-8859一致。从man iso-8859-1
:
Oct Dec Hex Char Description
────────────────────────────────────────────────────────────────────
240 160 A0 NO-BREAK SPACE
241 161 A1 ¡ INVERTED EXCLAMATION MARK
242 162 A2 ¢ CENT SIGN
243 163 A3 £ POUND SIGN
244 164 A4 ¤ CURRENCY SIGN
现代Unix系统使用UTF-8,磅符号不是A3
,而是C2 A3
:
Code char Hex Name
U+00A2 ¢ c2 a2 CENT SIGN
U+00A3 £ c2 a3 POUND SIGN
U+00A4 ¤ c2 a4 CURRENCY SIGN
U+00A5 ¥ c2 a5 YEN SIGN
这可以解释为什么grep
无法匹配
解决方案
实用工具文件
将尝试猜测文件的编码。跑步可能会有帮助
file yourfile
之后,运行iconv
:
iconv -f ISO-8859-1 -t utf8 <yourfile >yourfileconverted
总结
源文件的字符集似乎与操作系统的字符集不同。您需要使用诸如iconv
之类的实用程序来转换源文件以匹配操作系统
细节
您的hextump-C
输出将磅符号显示为A3
。这与Windows系统上常见的ISO-8859一致。从man iso-8859-1
:
Oct Dec Hex Char Description
────────────────────────────────────────────────────────────────────
240 160 A0 NO-BREAK SPACE
241 161 A1 ¡ INVERTED EXCLAMATION MARK
242 162 A2 ¢ CENT SIGN
243 163 A3 £ POUND SIGN
244 164 A4 ¤ CURRENCY SIGN
现代Unix系统使用UTF-8,磅符号不是A3
,而是C2 A3
:
Code char Hex Name
U+00A2 ¢ c2 a2 CENT SIGN
U+00A3 £ c2 a3 POUND SIGN
U+00A4 ¤ c2 a4 CURRENCY SIGN
U+00A5 ¥ c2 a5 YEN SIGN
这可以解释为什么grep
无法匹配
解决方案
实用工具文件
将尝试猜测文件的编码。跑步可能会有帮助
file yourfile
之后,运行iconv
:
iconv -f ISO-8859-1 -t utf8 <yourfile >yourfileconverted
不,您也尝试过将
hextump-C file
的输出添加到您的问题中。计数仍然为0,尽管该文件已更改。您的文件可能与控制台的编码不同。因此,请提供一个小样本文件,您可以将hextump-C小文件的输出发布到它上面。基本上,a是需要帮助的。很抱歉,Cyrus之前使用了小c。我想,无论如何,现在已经纠正了它。没有,我也尝试过在您的问题中添加hextdump-c file
的输出。计数仍然为0,尽管该文件的编码不同于控制台的编码。因此,请提供一个小样本文件,您可以将hextump-C小文件的输出发布到它上面。基本上,a是需要帮助你的。很抱歉Cyrus之前使用了小c,我想,无论如何现在已经更正了。谢谢你的解释。我可以使用iconv作为我的文件吗help@Linnea更新后的答案包括一个使用iconv
的示例。这确实非常有用,效果也很好,John!!!,谢谢你的解释我可以用iconv做我的文件吗help@Linnea更新后的答案包括一个使用iconv
的示例。这确实非常有用,效果也很好,John!!!,谢谢