-1

我有一个名为的文件LastNames.txt,其中列出了 100 个姓氏,流行度百分比从 0 到 100。问题是如何使用grep创建新文件,其中包含仅流行度百分比的姓氏0.000。注意:我使用 Unix 命令,这是我使用的代码:

grep '0.000' LastNames.tab > unpopularNames.tab

当我使用这个命令时,我得到一些百分比大于 0.000 的姓氏。

4

3 回答 3

2

尝试这样做:

 grep '\b0\.000\b' LastNames
  • .表示中的任何字符
  • \.字面意思 .
  • \b表示单词边界
于 2013-02-12T23:29:54.107 回答
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
于 2013-02-13T13:44:08.787 回答
0

我建议使用-Fand-w标志对整个单词进行固定的字符串匹配:

grep -Fw 0.000 file

来自男人grep

-F,--固定字符串

将 PATTERN 解释为固定字符串的列表,由换行符分隔,其中任何一个都将被匹配。(-F 由 POSIX 指定。)

-w, --word-正则表达式

仅选择那些包含构成整个单词的匹配项的行。测试是匹配的子字符串必须在行首,或者前面有一个非单词组成字符。同样,它必须位于行尾或后跟非单词组成字符。构成单词的字符是字母、数字和下划线。

演示:

$ 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
于 2013-02-13T13:48:59.437 回答