簡體   English   中英

為什么我從grep -oc“ foo”文件和grep -o“ foo”文件得到了不同的答案? wc -l 哪個是對的?

[英]Why am I getting different answers from grep -oc “foo” file and grep -o “foo” file | wc -l ? Which is correct?

這個問題確實說明了一切……我正在嘗試查找大文件中特定字符串出現的次數。
答案是相似的。。。。。。。。。。。。。。。。。。。。。。。。。。

誰能解釋為什么我得到不同的答案,哪個是正確的?

謝謝您的幫助。

grep -c僅計算匹配行,而grep -o每個匹配部分打印在單獨的行上,這意味着wc -l將打印比實際匹配更多的“行”。

據我grep -ocgrep -ocgrep -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 -o o  
o
o

但是使用--count-c )它將計算匹配的行數。

alex@yuzu:~$ echo -e "foo\nbar\nbaz" | grep -oc o
1

所以grep -oo | wc -l 即使單行中有多個匹配項, grep -oo | wc -l也會計算所有匹配項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM