這個難道是grep沒事的彩蛋麼?

sh/bash/dash/ksh/zsh等Shell脚本
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

這個難道是grep沒事的彩蛋麼?

#1

帖子 millenniumdark » 2012-09-29 19:49

代码: 全选

$ echo '一二三四五六七八九十' | grep -oE '[一-十]'
一
二
三
五
六
七
八
九
十
爲什麼沒四(事)?

GNU grep 2.5.4
头像
alvin_rxg
帖子: 21
注册时间: 2009-10-23 18:14

Re: 這個難道是grep沒事的彩蛋麼?

#2

帖子 alvin_rxg » 2012-09-29 20:01

:em05

代码: 全选

一 => U+4E00
十 => U+5341
四 => U+56DB
real newbie
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#3

帖子 millenniumdark » 2012-09-29 20:09

啊?原來grep比我想象中的笨很多啊!
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#4

帖子 lilydjwg » 2012-09-29 20:15

代码: 全选

>>> echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#5

帖子 millenniumdark » 2012-09-29 20:30

lilydjwg 写了:

代码: 全选

>>> echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
妳用的不是GNU grep吧?BSD的還是busybox的?
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: 這個難道是grep沒事的彩蛋麼?

#6

帖子 susbarbatus » 2012-09-29 20:40

代码: 全选

~> grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
GPLv3+ 许可证: GNU 通用公共许可证第三版或更高版本 <http://gnu.org/licenses/gpl.html>。
这是自由软件: 您可自由更改并重新分发它。
在法律所允许的范围内,不附带任何担保条款。

作者 Mike Haertel 和 其余作者请参看 <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>。
~> echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
~> 
沉迷将棋中……
头像
b33e
帖子: 3874
注册时间: 2011-06-07 14:20

Re: 這個難道是grep沒事的彩蛋麼?

#7

帖子 b33e » 2012-09-29 20:52

代码: 全选

~$ echo '一二三四五六七八九十' | grep -oE '[[:alpha:]]'
一
二
三
四
五
六
七
八
九
十
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#8

帖子 millenniumdark » 2012-09-29 21:15

susbarbatus 写了:

代码: 全选

~> grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
GPLv3+ 许可证: GNU 通用公共许可证第三版或更高版本 <http://gnu.org/licenses/gpl.html>。
这是自由软件: 您可自由更改并重新分发它。
在法律所允许的范围内,不附带任何担保条款。

作者 Mike Haertel 和 其余作者请参看 <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>。
~> echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
~> 
locale 問題?
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#9

帖子 millenniumdark » 2012-09-29 21:19

b33e 写了:[[:alpha:]]
這就不光match數字了。
头像
susbarbatus
帖子: 2966
注册时间: 2010-04-10 16:14
系统: Arch Linux

Re: 這個難道是grep沒事的彩蛋麼?

#10

帖子 susbarbatus » 2012-09-29 23:14

millenniumdark 写了:
susbarbatus 写了:

代码: 全选

~> grep -V
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
GPLv3+ 许可证: GNU 通用公共许可证第三版或更高版本 <http://gnu.org/licenses/gpl.html>。
这是自由软件: 您可自由更改并重新分发它。
在法律所允许的范围内,不附带任何担保条款。

作者 Mike Haertel 和 其余作者请参看 <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>。
~> echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
~> 
locale 問題?
是locale问题,不过我不理解为什么locale是zh_CN的时候反而不行,用en_US才可以……
沉迷将棋中……
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#11

帖子 millenniumdark » 2012-10-02 18:08

susbarbatus 写了: 是locale问题,不过我不理解为什么locale是zh_CN的时候反而不行,用en_US才可以……
奇怪了,照理zh_CN.UTF-8和en_US.UTF-8在這裏是一樣的,反正grep認unicode
jtshs256
帖子: 22323
注册时间: 2010-07-19 21:41
系统: OS X

Re: 這個難道是grep沒事的彩蛋麼?

#12

帖子 jtshs256 » 2012-10-02 18:12

代码: 全选

$ echo '一二三四五六七八九十' | grep -oE '[一-十]'
一
二
三
四
五
六
七
八
九
十
$ grep -V
grep (BSD grep) 2.5.1-FreeBSD
$ locale
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=
躺平
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#13

帖子 枫叶饭团 » 2012-10-02 18:16

代码: 全选

ef>echo '一二三四五六七八九十' | grep -oE '[一-十]' 
grep: Invalid collation character
头像
millenniumdark
论坛版主
帖子: 4159
注册时间: 2005-07-02 14:41
系统: Ubuntu 14.04 (Kylin)
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#14

帖子 millenniumdark » 2012-10-02 19:04

jtshs256 写了:

代码: 全选

$ echo '一二三四五六七八九十' | grep -oE '[一-十]'
一
二
三
四
五
六
七
八
九
十
$ grep -V
grep (BSD grep) 2.5.1-FreeBSD
啊?BSD的grep結果不一樣?好奇怪 :em20
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
联系:

Re: 這個難道是grep沒事的彩蛋麼?

#15

帖子 cuihao » 2012-10-02 19:15

代码: 全选

cuihao@cuihao-arch ~ $ echo '一二三四五六七八九十' | grep -oE '[一-十]'
grep: Invalid range end
cuihao@cuihao-arch ~ $ echo '一二三四五六七八九十' | LC_ALL="en_US.utf8" grep -oE '[一-十]'
一
二
三
五
六
七
八
九
十
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
回复