在bash正则时遇到的问题
egrep -o [^\x00-\xff]+ p上面的正则可以匹配到中文和符号
egrep -o [^\x00-\xff]+ p | egrep -o "\w+"
无法匹配到中文
egrep -o [^\x00-\xff]+ p | egrep -w "\w+"
可以匹配到中文
这是为什么?
因为不理解希望可以得到帮助。
不要光贴一堆man消息,或者发表一些扯淡信息,或者连问题都没看懂就知道装大爷的人也别来了,谢谢你们。
真心愿意帮忙的我在这里谢谢了。
:dizzy: :dizzy: 你把第二条命令改成这样试试export LC_ALL=en_US.UTF-8; egrep -o [^\x00-\xff]+ p | egrep -o "\w+" 先谢谢你。
按你的改过之后结果可以匹配到下划线。但是匹配依旧不到中文。
最开始连下划线都无法匹配到。
但是改过后第三天也只能匹配下划线了,我不明白这是为什么? 回复 3# rulebook
能否把你的测试数据贴出来看看 上面描述有点乱七八糟了。从这里看吧。
现在改完编码后情况是这样的。p里是文件内容
# cat p
中文asdasdasd
fewg啊sad
abc
阿姨哦
llllllllaaaalllll
124151
.,;'.-=_
# egrep -o [^\x00-\xff]+ p
中文
啊
阿姨哦
.,;'.-=_
-w这句原本是可以只匹配中文的,现在无法将符号剔除出去了。
# egrep -o [^\x00-\xff]+ p | egrep -w "\w+"
中文
啊
阿姨哦
.,;'.-=_
原本-o这句是什么也匹配不到得,现在改完编码可以匹配到一个下划线。
# egrep -o [^\x00-\xff]+ p | egrep -o "\w+"
_
------------------------------------------------------------------------------------------
最开始的情况:
# egrep -o [^\x00-\xff]+ p
中文
啊
阿姨哦
.,;'.-=_
# egrep -o [^\x00-\xff]+ p | egrep -w "\w+"
中文
啊
阿姨哦
# egrep -o [^\x00-\xff]+ p | egrep -o "\w+"
:dizzy: 本帖最后由 Shell_HAT 于 2013-11-07 17:45 编辑
-w这句原本是可以只匹配中文的,现在无法将符号剔除出去了。
# egrep -o [^\x00-\xff]+ p | egrep -w "\w+"
中文
啊
阿姨哦
.,;'.-=_
用这个命令测试正常:
# LC_ALL=C egrep -o [^\x00-\xff]+ p | egrep -w "\w+"
中文
啊
阿姨哦
还有这个:
# LC_ALL=C egrep -o [^\x00-\xff]+ p | LC_ALL=en_US.UTF-8 egrep -w "\w+"
中文
啊
阿姨哦
是的,在没有改LC_ALL=en_US.UTF-8这个之前
egrep -o [^\x00-\xff]+ p | egrep -w "\w+"这个确实是可以正确将中文晒出来的。
我的问题是 : 为什么会这样呢。
-o 是显示匹配的内容, -w 是精确匹配。
为何-o的只显示匹配内容没有将其晒出来
而-w精确匹配可以。
请问是跟字符编码有关系么?egrep在执行-o -w时有什么不同的地方么。
呵呵,谢谢你耐心的回答。
:handshake
页:
[1]