是否有特定的正则表达式类,包括欧元符号? 根据{{3}} [:print:]类(AFAIK€是可打印的)和[:punct:]类不包含欧元符号,因为它们只包含区域设置(en_US.UTF-8)和ASCII标点字符(包括$)
$ echo "I can has 5€ ?" | grep -o "[[:print:]*"
I can has 5
是否有另一种解决方案(因为我猜这个问题会与除了美元之外的所有货币字符都有关),这将允许我捕获每个可打印的字符?
修改 在使用putty设置后,我设法在打印文件时显示€,但grep-ing行为很奇怪。最初我甚至无法打印“€”bbut将putty编码更改为cp1252(而不是Unicode)后,我可以看到符号。虽然
仍然无法使用grepping$ 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"
...
答案 0 :(得分:1)
显然,在我的机器上:
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
?
(顺便说一句,新行是多次匹配的结果而不是错误印记货币符号)
$ cat test.bah | grep -P -o '[^[:print:]]*'
€
£
$ cat test.bah | grep -P -o '([[:print:]]|[^[:print:]])*'
I can has 5€ or 5£?
很少注意到:
答案 1 :(得分:0)
$ echo "I can has 5€ ?" | grep -o '[[:print:]]*'
I can has 5€ ?
$ echo $LANG
en_US.utf8