这个问题说明了这一切…我试图find大文件中特定string的出现次数。
答案是类似的… …像pipe道50000左右,49000单纯只是平原grep – oc …
任何人都可以解释为什么我得到不同的答案,哪一个是正确的?
谢谢您的帮助。
grep -c
只计算匹配的行数,而grep -o
在一个单独的行上打印每个匹配的部分,这意味着wc -l
会打印比实际匹配更多的“行”。
据我grep -oc
, grep -oc
和grep -c
之间没有任何有效的区别,因为压缩打印意味着不再有-o
结果效果。
例如,用一个双重匹配和一个单独的匹配打印三行“文件”:
$ printf 'foo foo\nbar\nfoo\n' | grep -oc foo 2 $ printf 'foo foo\nbar\nfoo\n' | grep -o foo foo foo foo
在--only-matching
( -o
)模式下,grep有时会为单个匹配行输出多行。
alex@yuzu:~$ echo -e "foo\nbar\nbaz" foo bar baz alex@yuzu:~$ echo -e "foo\nbar\nbaz" | grep -ooo o
但是--count
( -c
)会计算匹配的行数。
alex@yuzu:~$ echo -e "foo\nbar\nbaz" | grep -oc o 1
所以grep -oo | wc -l
grep -oo | wc -l
计算所有的比赛,即使在一条线上有多个比赛。