使用grep指定模式的Unix命令

使用grep指定模式的Unix命令,unix,grep,command,regex,Unix,Grep,Command,Regex,我有一个名为LastNames.txt的文件,其中列出了100个姓氏,人气百分比从0到100。 问题是如何使用grep创建只包含0.000人气百分比的姓氏的新文件。 注意:我使用Unix命令,下面是我使用的代码: grep '0.000' LastNames.tab > unpopularNames.tab 使用此命令时,我会得到一些百分比大于0.000的姓氏。尝试执行以下操作: grep '\b0\.000\b' LastNames 点表示字符中的任何字符 \。表示文字 \b表示

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

grep '0.000' LastNames.tab > unpopularNames.tab
使用此命令时,我会得到一些百分比大于0.000的姓氏。

尝试执行以下操作:

 grep '\b0\.000\b' LastNames
  • 表示字符中的任何字符
  • \。
    表示文字
  • \b
    表示单词边界

当您真正想要的是算术比较时,没有理由尝试让grep进行重新比较:

$ cat file
PEACE 0.003
GAGLIARDI 0.001
ZUPAN 0.000
ZUCHOWSKI 0.000

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

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

grep-Fw 0.000文件
从man
grep

-F、 --固定字符串

将模式解释为固定字符串的列表,由 换行符,任何要匹配的换行符。(-F由 POSIX.)

-w、 --word regexp

仅选择包含构成整体的匹配项的行 话。测试是匹配的子字符串必须是 在行首,或前面有非单词 构成特征。类似地,它必须在结尾或结尾 指行或后跟非单词组成字符。 单词组成字符包括字母、数字和 下划线

演示:

$cat文件
错误0E000
前10万名
中五万
降低25.000
底部0.000
#原始过匹配grep
$grep 0.000文件
错误0E000
前10万名
中五万
底部0.000
#使用正确的标志时,只匹配正确的行
$grep-Fw 0.000文件
底部0.000
注意:您可以使用
fgrep
而不是
grep-F

fgrep-w 0.000文件

Better在此提供示例输入/输出输入:grep'0.000'LastNames.tab>unpopularNames.tab输出:PEACE 0.003 GAGLIARDI 0.001 ZUPAN 0.000 ZUCHOWSKI 0。000@user2066595-sputnik意味着使用格式化的示例输入和格式化的预期输出更新您的问题,而不是使用未格式化的、不需要的输出添加注释。