作者 主題: 關於 grep 應用??  (閱讀 3858 次)

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

gerrybbs

  • 懷疑的國中生
  • **
  • 文章數: 40
  • 性別: 男
  • Linux/VoIP/Virtualization Consultant
    • 檢視個人資料
    • OSSLab
關於 grep 應用??
« 於: 2003-09-17 17:18 »
欲列出帳號為英文大寫開頭的項次, 以 /etc/passwd 而言.

嘗試以下列方式, 但大小寫帳號全都顯示.
1)$ grep "^[A-Z]" /etc/passwd
2)$ grep "^[!a-z]" /etc/passwd
3)$ grep "^[A-Z]*" /etc/passwd
4)$ sed "/^[A-Z]/!d" /etc/passwd

這除了實際有應用,同樣也是 LPIC 的考題, 請有經驗的朋友幫幫忙..

peiga

  • 憂鬱的高中生
  • ***
  • 文章數: 117
    • 檢視個人資料
關於 grep 應用??
« 回覆 #1 於: 2003-09-17 17:39 »
你何不自己試試看呢?

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
關於 grep 應用??
« 回覆 #2 於: 2003-09-17 21:43 »
引述: "peiga"
你何不自己試試看呢?


原 post 說他試過了, 不知道 peiga 兄是否試過了?    :)

弟剛剛也很好奇, 試了一下, 竟然和 gerrybbs 結果一樣, 覺得太不合理了.
於是在 man 半天的 grep 之後, 找到下面這段文字 [節引]:

in the default C locale, [a-d] is equivalent to [abcd].  Many  locales  sort  characters  in
dictionary  order, and in these locales [a-d] is typically not equivalent to [abcd]; it might
be equivalent to [aBbC-cDd]

簡單來說,  a-z 這種用法在 locale 為 C 的情況下是正常的, 但是有些 locale 有自己的
字典順序, 因此 [a-z] 的結果 可能不一樣. 弟的 locale 是 zh_TW.Big5 , 結果就不一樣,
改回  C 之後就正常了.

供大家參考, 若有誤請指正   :)

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17477
    • 檢視個人資料
    • http://www.study-area.org
關於 grep 應用??
« 回覆 #3 於: 2003-09-18 07:38 »
嗯... 1 與 4 應是可以的,原因應是 duan 兄所言。

peiga

  • 憂鬱的高中生
  • ***
  • 文章數: 117
    • 檢視個人資料
關於 grep 應用??
« 回覆 #4 於: 2003-09-18 10:56 »
抱歉抱歉,沒有惡意,只是沒想到看似只是「小小」的一個問題
背後卻有那麼大的文章~~

多謝duan兄教誨~~
讓小弟我「臨表涕泣,不知所云」那~~

gerrybbs

  • 懷疑的國中生
  • **
  • 文章數: 40
  • 性別: 男
  • Linux/VoIP/Virtualization Consultant
    • 檢視個人資料
    • OSSLab
關於 grep 應用??
« 回覆 #5 於: 2003-09-18 21:47 »
感謝各位回答.

此次又再警惕自己看man的不用心,節錄 duan兄 未完的下一段
代碼: [選擇]

for  example.   To  obtain the  traditional interpretation of bracket expressions, you can use the        C locale by setting the LC_ALL environment variable to the value C.


用法:
$ export LC_ALL="C"
或寫入個人設定檔
~/.bash_profile

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
關於 grep 應用??
« 回覆 #6 於: 2003-09-18 22:34 »
引述: "peiga"
抱歉抱歉,沒有惡意,只是沒想到看似只是「小小」的一個問題
背後卻有那麼大的文章~~

多謝duan兄教誨~~
讓小弟我「臨表涕泣,不知所云」那~~


peiga 兄客氣了, 很多問題的確很容易不小心就造成誤判, 這次弟也是正好看到
原 post 說測過, 一時好奇也來試試, 也算是得了個經驗.    :)

arnix

  • 懷疑的國中生
  • **
  • 文章數: 69
    • 檢視個人資料
關於 grep 應用??
« 回覆 #7 於: 2003-09-19 01:05 »
哇! 這真是個大發現耶,以後在寫 shell script 時都要特別加入這行
export LC_ALL="C" 比較保險。

搞不好,以前有些 script 問題解得拐彎抹角實際上就出在這裏呢!