Grep on a value in a specific column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep on a value in a specific column
# 1  
Old 01-09-2015
Grep on a value in a specific column

I need to grep all records from a file that has 1072 in 3rd column. 1072 can be prefixed by "SBC.", "CLS." or "DPT.". My search is just based on string 1072 in 3rd column. Delimiter in the file is tab. For example:
Input FIle:

"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "CLS.107201" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "DPT.1072" "CP.BUP.NY"
"InvType" "Organization" "DPT.1098" "CP.BUP.NY"

Desired Results:
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "CLS.107201" "CP.BUP.NY"
"InvType" "Organization" "DPT.1072" "CP.BUP.NY"

Please help....I tried something like awk -F "\t" '($3 == 1072) {print $0}' filename
# 2  
Old 01-09-2015
Use regular expression comparison operator instead:-
Code:
'$3 ~ /1072/'

# 3  
Old 01-09-2015
Quote:
Originally Posted by yale_work
I need to grep all records from a file that has 1072 in 3rd column. 1072 can be prefixed by "SBC.", "CLS." or "DPT.". My search is just based on string 1072 in 3rd column. Delimiter in the file is tab. For example:
Input FIle:

"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "CLS.107201" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10980101" "CP.BUP.NY"
"InvType" "Organization" "DPT.1072" "CP.BUP.NY"
"InvType" "Organization" "DPT.1098" "CP.BUP.NY"

Desired Results:
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "CLS.107201" "CP.BUP.NY"
"InvType" "Organization" "DPT.1072" "CP.BUP.NY"

Please help....I tried something like awk -F "\t" '($3 == 1072) {print $0}' filename
Hello yale_work,

Following may help you in same.
Code:
awk '($3 ~ 1072)' Input_file

Output will be as follows.
Code:
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "SBC.10720101" "CP.BUP.NY"
"InvType" "Organization" "CLS.107201" "CP.BUP.NY"
"InvType" "Organization" "DPT.1072" "CP.BUP.NY"

Thanks,
R. Singh
# 4  
Old 01-09-2015
Thanks.
# 5  
Old 01-09-2015
adding a line to the sample:
Code:
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "CLS.107201"    "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10980101"  "CP.BUP.NY"
"InvType"       "Organization"  "DPT.1072"      "CP.BUP.NY"
"InvType"       "Organization"  "DPT.1098"      "CP.BUP.NY"
"InvType"       "Organization"  "DPT.10981072"  "CP.BUP.NY"

both commands above produce
Code:
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "CLS.107201"    "CP.BUP.NY"
"InvType"       "Organization"  "DPT.1072"      "CP.BUP.NY"
"InvType"       "Organization"  "DPT.10981072"  "CP.BUP.NY"

As I read the OP requirement, the last line should not be included.
The following 2 lines only include lines with .1072 in them
I'm a scripting rookie.
I can't figure out how to get the prefix requirement into awk or the 3rd element requirement into egrep.
Code:
$ awk '($3 ~ /\.1072/)' Input_file
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "CLS.107201"    "CP.BUP.NY"
"InvType"       "Organization"  "DPT.1072"      "CP.BUP.NY"

$ cat Input_file | egrep '(CLS|DPT|SBC)'[.]1072
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "SBC.10720101"  "CP.BUP.NY"
"InvType"       "Organization"  "CLS.107201"    "CP.BUP.NY"
"InvType"       "Organization"  "DPT.1072"      "CP.BUP.NY"

Figured it out:
added the following 3 lines to the original sample that get displayed.
Code:
"InvType"	"Organization"	"DPT.10981072"	"CP.BUP.NY"
"InvType"	"Organization"	"ABC.1072"	"CP.BUP.NY"
"InvType"	"Organization"	"CDPT.1072"	"CP.BUP.NY"

This line excludes them
Code:
awk '($3 ~ /^\"(CLS|DPT|SBC)\.1072/)' Input_file


Last edited by ernie; 01-10-2015 at 03:45 PM.. Reason: figured out what I couldn't last night
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Can grep a specific column?

Hello All I have an input file with data below. I would like to grep and display the data where 3rd column contains string or at least one character. Kindly please help me with this! Input: tjfa3|zznpou|224fdd.34.ff3.35 |Tiv|Otj|1 fgduul7|zznikj| ... (7 Replies)
Discussion started by: DoveLu
7 Replies

2. Shell Programming and Scripting

Overwrite specific column in xml file with the specific column from adjacent line

I have an xml file dumped from rrd file, that I want to "patch" so the xml file doesn't contain any blank hole in the resulting graph of the rrd file. Here is the file. <!-- 2015-10-12 14:00:00 WIB / 1444633200 --> <row><v> 4.0419731265e+07 </v><v> 4.5045912770e+06... (2 Replies)
Discussion started by: rk4k
2 Replies

3. UNIX for Dummies Questions & Answers

Highlighting specific column in cat/grep

I have a large * delimited text file and need to highlight specific columns on specific lines. The file looks similar to this: ABC*01*00*01*00000 000000 *00000 000000 *35*0*0*0*0*20000*0*0*1*0000*00*4*0*3*0*0*1*0* *35*0000*001*4*1OT2*0148*0*0*0*0*0*0*6A7801B0**TEST1... (1 Reply)
Discussion started by: say170
1 Replies

4. Shell Programming and Scripting

How to print multiple specific column after a specific word?

Hello.... Pls help me (and sorry my english) :) So I have a file (test.txt) with 1 long line.... for example: isgc jsfh udgf osff 8462 error iwzr 653 idchisfb isfbisfb sihfjfeb isfhsi gcz eifh How to print after the "error" word the 2nd 4th 5th and 7th word?? output well be: 653 isfbisfb... (2 Replies)
Discussion started by: marvinandco
2 Replies

5. Shell Programming and Scripting

How to grep an empty line in a specific column of a file?

Suppose i have the following data : cat file.txt 12431,123334,55353,546646,14342234,4646,35234 123123,3535,123434,132535,1234134,13535,123534 123213,545465,23434,45646,2342345,4656,31243 2355425,2134324,53425,342,35235,23434,234535 3423424,234234,65465,,2344,35436,234524,234... (7 Replies)
Discussion started by: Ravi Tej
7 Replies

6. Shell Programming and Scripting

Grep only specific lines ordered by column/date

Hi everybody, I'd like to think I've been through the search tool not only on this site, but also on google too, but I haven't been able to find what I was looking for. If I might've missed something on this forum, please slap me in the face with a link that you consider useful for my query :D ... (4 Replies)
Discussion started by: dilibau
4 Replies

7. UNIX for Dummies Questions & Answers

Grep from specific column in one file based on another file [Please help!]

Hey Guys, to keep it simple, I have an idFile: 1006006 1006008 1006011 1007002 ...... and famFile: 1006 1006001 1006016 1006017 1 1006 1006006 1006016 1006017 1 1006 1006007 0 0 2 1006 1006008 1006007 1006006 2 1006 1006010 1006016 1006017 2 1006 1006011 1006016 1006017 1 1006... (2 Replies)
Discussion started by: Zoho
2 Replies

8. Shell Programming and Scripting

Assigning a specific format to a specific column in a text file using awk and printf

Hi, I have the following text file: 8 T1mapping_flip02 ok 128 108 30 1 665000-000008-000001.dcm 9 T1mapping_flip05 ok 128 108 30 1 665000-000009-000001.dcm 10 T1mapping_flip10 ok 128 108 30 1 665000-000010-000001.dcm 11 T1mapping_flip15 ok 128 108 30... (2 Replies)
Discussion started by: goodbenito
2 Replies

9. Shell Programming and Scripting

Insert a text from a specific row into a specific column using SED or AWK

Hi, I am having trouble converting a text file. I have been working for this whole day now, still i couldn't make it. Here is how the text file looks: _______________________________________________________ DEVICE STATUS INFORMATION FOR LOCATION 1: OPER STATES: Disabled E:Enabled ... (5 Replies)
Discussion started by: Issemael
5 Replies
Login or Register to Ask a Question