Basic grep -c Question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Basic grep -c Question
# 1  
Old 10-16-2014
Basic grep -c Question

Hello,

I have a csv list which contains a reference and tariff code for every customer we have (~7.2 million) looking something like this:

Code:
customernumber,tariff
012345678910,T0001
012345678911,T0002
012345678912,T0001-A0001

I have a 2nd list which contains every unique tariff and tariff-add on combination on our system (~1000 entries) and it looks like this:

Code:
T0001
T0001-A0001
T0001-A0002
T0002
T0002-A0001
T0002-A0002

Using the unique tariff list I wanted to count the number of customers with each tariff/tariff-addon combination on the system. So I cam up with the following grep:

Code:
cat uniq-tariff-addon.csv | while read tariff
do 
echo $tariff `grep -c $tariff customer_tariff_list.csv` >> sub-tariffcount.csv; done

My problem being that it catches the customers with a tariff-addon in the count of just tariff only as follows:

Code:
customernumber,tariff
012345678910,T0001
012345678911,T0002
012345678912,T0001-A0001 (where A000X is an addon)

grep -c T0001 in the above file would return a count of 2
grep -c T0001-A0001 in the above file would return a count of 1

How can I get it to count T0001 and not catch T0001-A0001 as well?


Thanks in advance
Cludgie

Last edited by Corona688; 10-16-2014 at 12:11 PM.. Reason: Code tags for code please.
# 2  
Old 10-16-2014
Stop the match at the end-of-line (indicated by the $-sign following $tariff):
Code:
 while read tariff; do echo $tariff $(grep -c $tariff\$ customer_tariff_list.csv); done <uniq-tariff-addon.csv

There's options to grep as well that make it match whole words or entire lines only ... see man grep.
This User Gave Thanks to RudiC For This Post:
# 3  
Old 10-16-2014
Thanks for the quick response RudiC. I tried using grep -xc, but it still caught T0001-A0001 when T0001 was the criteria. Smilie

I also tried your line, but it stops here:
T000001 0

Thanks
Cludgie
# 4  
Old 10-16-2014
-x does not make sense for your requirement, it matches entire lines. Try -w.
This User Gave Thanks to Corona688 For This Post:
# 5  
Old 10-16-2014
as a test I tried the following

Code:
grep -w T000001 customer_tariff_list.csv

012345678918,"T000001-A00220"

The above is the only entry for anyone with this old tariff on the system, but as you can see they have an addon, which means it shouldn't be caught by grep.

Any other thoughts?


Thanks
Cludgie
# 6  
Old 10-16-2014
Is that add-on enclosed in double quotes (as indicated in your last post)?
# 7  
Old 10-16-2014
It is, sorry I failed to mention that in the original post. My mistake
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Basic grep question

Shell : Bash shell (Fedora 26) In the below text file (output.txt), I need to find all lines starting with the pattern pc. As you can see, only one line matches this condition (pc hello world). But, my below 3 attempts return wrong output. How do I use the grep command correctly here ? ... (4 Replies)
Discussion started by: kraljic
4 Replies

2. Shell Programming and Scripting

Basic Grep

I am trying to grep a section of .txt file...but once I grep the certain area of the file I would like to display all lines below it as well....how do I have to go about doing this... example grep "Sidney Crosby" hockey.txt result Sidney Crosby Age Goals Assist Can this be done... (8 Replies)
Discussion started by: chrisp200
8 Replies

3. Shell Programming and Scripting

basic grep question

I think I am doing this correctly, but it is responding very quickly with no results so I am not sure. I need to do a case insensitive grep of all files in my current directory grep -i <keyword> /my/directory is that correct? (1 Reply)
Discussion started by: guessingo
1 Replies

4. Shell Programming and Scripting

basic nc question

i'm doing this in one terminal: nc -lu 7402 and it appears to start listening properly, then in another i do this: echo "hello" | nc -u localhost 7402 and nothing happens on the listening terminal - what am i doing wrong? thanks. (7 Replies)
Discussion started by: peterworth
7 Replies

5. Shell Programming and Scripting

basic question

hi, I have a basic question,, i am in a directory called /intas/OCU_3.9.1/sbin ocuut1@france>mv itsa_tcs itsa_tcs_old mv: itsa_tcs_old: rename: Permission denied i am logging as the owner of the file. when i am doing this i am getting the above error of permission denied. I know... (3 Replies)
Discussion started by: namishtiwari
3 Replies

6. HP-UX

Basic OS question

Could someone tell me the command to find out the OS version which will give 12 character not the 9 characters(which is usually machine id). uname -i gives machine id and uname -a is more comprehensive way to look. Thanks! (4 Replies)
Discussion started by: catwomen
4 Replies

7. UNIX for Dummies Questions & Answers

Really basic question....

Hello all. Let me start off by saying I know a little more then it seems by me asking this question... here goes I have an old 486 box and I want to start messing around with unix. I've been taking classes for 3 or 4 years in c programming in unix, so I am used to the commands and such, but I... (1 Reply)
Discussion started by: robherms
1 Replies

8. UNIX for Dummies Questions & Answers

Very Basic Question

How to know if my AIX 5.2 is running at 64bits? THANKS (5 Replies)
Discussion started by: GermanSkull
5 Replies

9. UNIX for Dummies Questions & Answers

basic question

hey...when i type who...what does "pts" field mean??? eg pts 0 etc (1 Reply)
Discussion started by: urwannabefriend
1 Replies

10. UNIX for Dummies Questions & Answers

basic question

I have some basic doubts. Can someone clarify in this forum? 1)if then eval ' tset -s -Q -m ':?hp' ' else eval ' tset -s -Q ' what does it exactly mean in .profile? 2) what are 'nobody' and 'noaccess' usernames in /etc/passwd file. ... (3 Replies)
Discussion started by: asutoshch
3 Replies
Login or Register to Ask a Question