【发布时间】:2016-10-27 12:49:01
【问题描述】:
有人可以解释以下 grep 行为吗?
我有一个文本文件countries.list(每行都有一个电影名称和制作该电影的国家/地区)。
我想列出所有包含国家名称的行。
command : grep "UK" countries.list | wc -l
结果:55
所以这意味着文件中有 55 行匹配,如果我将结果转储到文件中,显然该文件有 55 行。
如果我使用:
command grep -c "UK" countries.list
结果:223523
这意味着有 223523 个匹配项
wc -l countries.list : 1956994 countries.list
每部电影都换行。
如果我打开为什么 grep "UK" countries.list 不返回所有行。
很明显我做错了什么。你能帮我解释一下为什么会这样吗?
如果我只想打印匹配的国家/地区名称:
grep -o "UK" countries.list | wc -l
我得到 223766(与 223523 不同,但仍然比 55 多很多)
【问题讨论】:
-
grep -o "UK" 会更高,因为有些行可能不止一次包含文本“UK”,因此会输出为多行
-
你的
grep是不是别名?所描述的行为肯定很奇怪 -
@WumpusQ.Wumbley 这是一个别名,但它不限制任何东西:
type grepgrep is an alias for grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn} -
您能否创建一个示例输入文件,其中包含几行包含 UK 和几行不包含它们以供我们测试?