Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 是否有Grep命令来Grep井号(£;),多个Grep选项都没有尝试过_Unix_Grep - Fatal编程技术网

Unix 是否有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选项,但尚未得到任何结果,非常感谢您的快速帮助

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!!!,谢谢