[英]How to get no. of lines count that matches a string from all the files in a folder
問題描述:-我有一個包含很多文本文件的文件夾。 我想在該文件夾中的所有文件中搜索一個特定的字符串,比如“string_example”。然后我應該得到總數。 具有字符串“string_example”的所有文件中的行數。 這意味着如果第一個文本文件中有 5 個匹配行,第二個文本文件中有 10 個匹配行,第三個文本文件中有 3 個匹配行。那么輸出應該是 5+10+3=18
我嘗試過的: -我已經通過互聯網沖浪並找到了一些命令,例如
grep -r -n ".string_example" .
此 bash 命令將打印文件名以及包含字符串“string_example”的行的行號。為了更好地理解,這里是示例輸出
第一個文件:1:string_example 在那里
第一個文件:2:string_example 不存在
第二個文件:1:string_example 在那里
等等......但我想要的實際輸出是上述輸出中的 3。
我還嘗試了更多的 bash 命令,但沒有用。
我的問題:- 是否有任何用於此類目的的 bash 命令。如果沒有,如何為以下要求編寫腳本。
請幫助我
您可以使用wc -l
您的grep
以獲取包含您的關鍵字的行數:
grep -r "string_example" . | wc -l
你也可以使用 awk 來做到這一點:
awk '/string_example/{++c}END{print c}' *
每當一行與模式匹配時, c
就會增加。 讀取所有文件后,打印總計數。
你想要這樣的東西嗎?
grep -l string_example *|xargs wc -l
編輯:
您想獲取所有文件中匹配的行數,或包含匹配行的文件中的總行數?
使用在 shell 提示符下給出的這個命令,你將
% find -type f -name \*.h | xargs grep -l stdlib | xargs wc -l | awk '{a+=$1} END{print a}'
16372
%
.h
stdlib
引用,並通過選項-l
僅打印(並且一次)具有至少一個匹配項的文件的名稱wc -l
awk
對每個文件的行數求和
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.