2013-02-12 205 views
-1

我有一個名爲LastNames.txt文件,列出了從0人氣的百分比100個姓氏爲100 的問題是如何使用grep創建一個包含有0.000%的姓氏新文件僅受歡迎。 注:我使用的Unix命令,這是我使用的代碼:Unix命令

grep '0.000' LastNames.tab > unpopularNames.tab 

當我使用這個命令我得到一些姓氏比0.000更大的百分比。

+0

更好地在這裏提供了樣本輸入/輸出 – 2013-02-12 23:46:21

+0

輸入:grep的 '0.000' LastNames.tab> unpopularNames .tab 輸出: PEACE 0。003 GAGLIARDI 0.001 ZUPAN 0.000 ZUCHOWSKI 0.000 – user2066595 2013-02-13 02:45:28

+0

@ user2066595 - sputnik意味着用格式化的樣本輸入和格式化的期望輸出更新您的問題,而不是添加評論與未格式化,不受歡迎的輸出。 – 2013-02-13 13:41:00

回答

2

試着這樣做:

grep '\b0\.000\b' LastNames 
  • .意味着任何字符
  • \.意味着文字.
  • \b意味着字邊界
+0

將匹配10.000 – 2013-02-13 13:39:17

+0

用_word邊界編輯的開機自檢_ \ \ b – 2013-02-13 13:56:50

1

沒有理由要儘量做到的grep做一個RE比較,當你真正想要的是一個算術比較:

$ cat file 
PEACE 0.003 
GAGLIARDI 0.001 
ZUPAN 0.000 
ZUCHOWSKI 0.000 

$ awk '$NF == 0' file 
ZUPAN 0.000 
ZUCHOWSKI 0.000 
0

我建議使用-F-w標誌做一個固定的字符串匹配在全字:

grep -Fw 0.000 file 

從人grep

-F,--fixed串

解釋圖案作爲固定的字符串的列表,通過 換行,其中的任何一個是被匹配分離。 (-F由 POSIX指定。)

-w,--word-regexp的

選擇只含有形成整體 字匹配的那些行。測試是匹配的子字符串必須在行的開始處爲 ,或者在非字 組成字符之前。同樣,它必須在該行的末尾 之後,或者後面跟着一個非單詞組成字符。 單詞組成字符是字母,數字和 下劃線。

演示:

$ cat file 
error  0E000 
top  100.000 
middle 50.000 
lower  25.000 
bottom  0.000 

# Orignal over matching grep 
$ grep 0.000 file 
error  0E000 
top  100.000 
middle 50.000 
bottom  0.000 

# With correct flags only right lines are matched 
$ grep -Fw 0.000 file 
bottom  0.000 

注意:您可以使用fgrep代替grep -F

fgrep -w 0.000 file