grep检索googlengram条目的正确语法是什么?

grep检索googlengram条目的正确语法是什么?,grep,Grep,google ngram格式与此类似: apollo_. 2008 6 5 apollonia_NOUN 1760 1 1 apollo.5 1760 1 1 apollo 2008 6 5 如果我只想拉出包含单词“apollo”且没有后缀的行,正确的grep命令是什么?这应该可以做到: perl -lne 'print if(/\bapollo(\s+|$)/)' your_file 对于此数据集,您可

google ngram格式与此类似:

apollo_.        2008    6   5
apollonia_NOUN  1760    1   1
apollo.5        1760    1   1
apollo          2008    6   5

如果我只想拉出包含单词“apollo”且没有后缀的行,正确的grep命令是什么?

这应该可以做到:

perl -lne 'print if(/\bapollo(\s+|$)/)' your_file

对于此数据集,您可以执行以下操作:

$ grep '^apollo\s' file
apollo          2008    6   5
这是
grep
对于以
apollo
开头,后跟空白字符的行。与
grep
的此类匹配相关的选项有:

-w、 --word regexp

仅选择包含构成整词的匹配项的行。测试是匹配子字符串必须位于行的开头,或者前面必须有非单词组成字符。 类似地,它必须位于行尾或后跟非单词组成字符。单词组成字符是字母、数字和下划线

x、 --行regexp

仅选择与整行完全匹配的匹配项。(-x由POSIX指定。)


您还可以使用正则表达式选项
\b
来匹配单词边界,但是这和
grep
选项
-w
对于行
apollo.5
上的特定数据失败,原因是
apollo
之后的标点符号

这两种方法都不能阻止使用的格式。被发现了。例如,它去掉了apollonia_的名词,而不是apollo。5@chris...Updated...please现在检查。如果阿波罗出现在这一行的末尾怎么办?@Vijay,那么您将对该数据集使用适当的解决方案。OP已经很清楚地说明了他的问题,不需要一个正则表达式来管理所有的正则表达式。