在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