如何让grep输出所有匹配的行?

时间:2016-10-27 12:49:02

标签: regex linux unix grep

有人可以解释以下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)

1 个答案:

答案 0 :(得分:0)

感谢您的回复,我找到了答案 grep将此打开为二进制文件而不是文本文件。

提示:CustomEvent的最后一行: 二进制文件countries.list匹配

如果我这样做: $ grep "UK" countries.list $ strings countries.list | grep "UK" | wc -l