作者 主題: (已解決)regexp 中 extended RE 的問題  (閱讀 1160 次)

0 會員 與 1 訪客 正在閱讀本文。

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
(已解決)regexp 中 extended RE 的問題
« 於: 2014-06-19 22:51 »
用 egrep 指令想要找出該行是以大寫字母做起始或是找出空白行,需怎麼執行? 我這樣下指令:
# egrep '^[A-Z]|^$' file

但列出的結果連部分小寫字母開頭的那幾行也會列出來。

是哪裡做錯嗎 ?
« 上次編輯: 2014-06-22 08:09 由 apachectl »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
Re: regexp 中 extended RE 的問題
« 回覆 #1 於: 2014-06-21 11:10 »
這樣呢?
'(^[A-Z]|^$)'

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: regexp 中 extended RE 的問題
« 回覆 #2 於: 2014-06-21 12:26 »
試了一下(ubuntu):

引用
$ cat tf.txt
123
456
Aa aa
bB BB

Cc cc
dD DD
eE EE
fF FF

Gg gg
hH HH
iI II
jJ JJ
kK KK
Ll ll
mM MM
nN nn

$ egrep '^[A-Z]|^$' tf.txt
Aa aa

Cc cc

Gg gg
Ll ll

$

看起來很正常

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
Re: regexp 中 extended RE 的問題
« 回覆 #3 於: 2014-06-21 13:31 »
加上() 還是一樣。
有人是在centos .fedora 或 redhat 上面測試的嗎? 我是在 redhat 上面做的

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: regexp 中 extended RE 的問題
« 回覆 #4 於: 2014-06-21 15:22 »
centos 5.4 x64 測試是正常的, centos 6.0 x64 就不行了

只試 ‘^[A-Z]’ 或 ‘^$’ 則正常,或是 ‘^[A-Z] |(非 ^$)’ 也都正常

^$ 跟其他的組合就無效,應該是 bug 吧!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
Re: regexp 中 extended RE 的問題
« 回覆 #5 於: 2014-06-21 18:22 »
locale 是什麼?

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
Re: regexp 中 extended RE 的問題
« 回覆 #6 於: 2014-06-21 20:26 »
目前試過
LANG=en_US.UTF-8
LANG=zh_TW.UTF-8

但都還是有問題。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17466
    • 檢視個人資料
    • http://www.study-area.org
Re: regexp 中 extended RE 的問題
« 回覆 #7 於: 2014-06-22 01:29 »

LANG=C
呢?

apachectl

  • 憂鬱的高中生
  • ***
  • 文章數: 174
    • 檢視個人資料
Re: regexp 中 extended RE 的問題
« 回覆 #8 於: 2014-06-22 08:09 »
BINGO
編碼問題啦
THX