Grep 是否存在包含€;

Grep 是否存在包含€;,grep,Grep,是否有特定的正则表达式类,包括欧元符号? 根据[:print:]类(AFAIK欧元可打印)和[:putt:]类不包含欧元符号,因为它们只包含区域设置(en_US.UTF-8)和ASCII标点字符(包括$) 是否有另一种解决方案(我想这个问题将与除美元以外的所有货币字符相适应)允许我捕获所有可打印字符 编辑 在玩了putty设置之后,我在打印文件时设法显示了欧元,但是grep-ing它的行为很奇怪。起初我甚至无法打印“€”b,但在将putty编码更改为cp1252(而不是Unicode)后,我可以

是否有特定的正则表达式类,包括欧元符号? 根据[:print:]类(AFAIK欧元可打印)和[:putt:]类不包含欧元符号,因为它们只包含区域设置(en_US.UTF-8)和ASCII标点字符(包括$)

是否有另一种解决方案(我想这个问题将与除美元以外的所有货币字符相适应)允许我捕获所有可打印字符

编辑 在玩了putty设置之后,我在打印文件时设法显示了欧元,但是grep-ing它的行为很奇怪。起初我甚至无法打印“€”b,但在将putty编码更改为cp1252(而不是Unicode)后,我可以看到符号。不过,Greping仍然不起作用

$ cat test.bah
I can has 5€ ?
$ cat test.bah | grep -o '[[:print:]]*'
I can has 5
 ?
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
...

显然,在我的机器上:

Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-virtual i686) 
grep --version grep (GNU grep) 2.10 
bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)
解决方案是使用-p开关并匹配
[[:print:]
或不可打印的
[^[:print:]
字符:

$ cat test.bah
I can has 5€  or 5£?
$ cat test.bah | grep -P -o '[[:print:]]*'
I can has 5
  or 5
?
(顺便说一句,新行是多次匹配的结果,而不是货币符号打印错误)

几点注意:

  • @melpomene在回答中表示,他的控制台或grep版本更好地处理货币符号。我正在使用Ubuntu12.04的aws股票版
  • 在我的提问中,我提到我需要更改腻子设置,以防 有人需要设置-在“窗口->翻译->将接收到的数据设置为Win1252(西文)”下,似乎有点违反直觉,将编码设置为UTF-8会使欧元和英镑显示为#或▒ 判定元件 挂起图形字符(选定选项)

  • 很明显,它在我的机器上不起作用,否则,我就不麻烦问了。另外,您可以从我的编辑中看到(即使我最初提到my env设置为UTF8),您的编辑不会显示其余的区域设置或
    test.bah
    .1的编码。所有的区域设置都是en_US.UTF8,您引用了“LANG”,它显示为2。文件编码并不重要问题在ASCI和UTF-8上都是相同的更正:当文件编码为UTF8时,它显示“5–5”,而只是新的一行。当然,编码很重要。ASCII甚至没有欧元符号。如果UTF-8显示不正确,可能是您的putty设置有问题。欧元符号与gnu grep 2.6.3上的[[:print:]类匹配。您正在运行哪个版本?2.10,您可以在我的答案上看到所有详细信息
    Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-32-virtual i686) 
    grep --version grep (GNU grep) 2.10 
    bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)
    
    $ cat test.bah
    I can has 5€  or 5£?
    $ cat test.bah | grep -P -o '[[:print:]]*'
    I can has 5
      or 5
    ?
    
    $ cat test.bah | grep -P -o '[^[:print:]]*'
    €
    £
    $ cat test.bah | grep -P -o '([[:print:]]|[^[:print:]])*'
    I can has 5€  or 5£?