簡體   English   中英

如何得到沒有。 與文件夾中所有文件中的字符串匹配的行數

[英]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
% 
  1. 獲取所有文件的列表,這里和下面,以.h
  2. grep 這些文件以查找對stdlib引用,並通過選項-l僅打印(並且一次)具有至少一個匹配項的文件的名稱
  3. 將名稱列表傳遞給wc -l
  4. 使用awk對每個文件的行數求和

暫無
暫無

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

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