歡迎您光臨本站 註冊首頁

在bash正則時遇到的問題

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

在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

[火星人 ] 在bash正則時遇到的問題已經有504次圍觀

http://coctec.com/docs/service/show-post-122.html