reclined2
reclined2

Reputation: 11

grep matches counted per keyword?

I am using

$ grep -cf keyword_file Folder1/*

to generate a count of how many lines, in files housed within Folder1, match a keyword from the keyword_file.

this generates an aggregate count total such as

file1: 7   
file2: 4   
file3: 9

my problem:
I would like the output to be in the form below

first_keyword   
file1: 5  
file2: 0  
file3: 5  
second_keyword  
file1:  0  
file2:  3  
file3:  1  
third_keyword  
file1:  2   
file2:  1   
file3:  3

so that I can see how many times each individual keyword was present in a line of each file.

How do I achieve this?

===== added detail ====

keyword_file is at Documents/script_pad/keyword_file

Folder1 is at Documents/script_pad/Folder1

Upvotes: 0

Views: 46

Answers (1)

reclined2
reclined2

Reputation: 11

what worked for me was

creating a file "Documents/script_pad/loop2" containing

#!/bin/bash
cat Documents/script_pad/keyword_file | while read line
do
echo $line; grep -c $line Documents/script_pad/Folder1/*
done

which when run resulted in

$ bash Documents/script_pad/loop2 
first_keyword
Documents/script_pad/Folder1/file1:5
Documents/script_pad/Folder1/file2:0
Documents/script_pad/Folder1/file3:5
second_keyword
Documents/script_pad/Folder1/file1:0
Documents/script_pad/Folder1/file2:3
Documents/script_pad/Folder1/file3:1
third_keyword
Documents/script_pad/Folder1/file1:2
Documents/script_pad/Folder1/file2:1
Documents/script_pad/Folder1/file3:3

Upvotes: 1

Related Questions