Grep multiple words with not null value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Grep multiple words with not null value
# 1  
Old 11-13-2012
Grep multiple words with not null value

Hi,

I want to grep a file if any one (GH, IJ, KL) is not null. If it is null i dont want to pull anything.

Code:
cat file | awk '{print ($1)}'
Parameters are : AB=123;CD=456;EF=6789;
cat file | awk '{print ($2)}'
GH=456;IJ=789;KL=1011

eg:
Contents in file:
Code:
Parameters are : AB=123;CD=456;EF=6789;GH=;IJ=;KL=
Expected output: <blank>

Parameters are : AB=123;CD=456;EF=6789;GH=456;IJ=789;KL=1011
Expected Output: AB=123;CD=456;EF=6789;GH=456;IJ=789;KL=1011

Please help.

Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.

Last edited by zaxxon; 11-13-2012 at 09:17 AM.. Reason: code tags, see PM
# 2  
Old 11-13-2012
try


Code:
awk -F ";" '{for(i=1;i<=NF;i++){if($i ~ /GH|IJ|KL/ && length($i) <=3){$0="Blannk";break}}}1' OFS=";" file

also can be written as

Code:
egrep -v "GH=;|IJ=;|KL=$" file

pamu

Last edited by pamu; 11-13-2012 at 09:52 AM..
This User Gave Thanks to pamu For This Post:
# 3  
Old 11-13-2012
this works for all

Code:
awk -F\; '{for(i=1;i<=NF;i++){split($i,_,"=");if(!_[2])next;}print $0}' filename

---------- Post updated at 09:34 PM ---------- Previous update was at 09:32 PM ----------

Code:
$ cat a.txt
AB=123;CD=456;EF=6789;GH=;IJ=;KL=
AB=123;CD=456;EF=6789;GH=456;IJ=789;KL=1011

$ awk -F\; '{for(i=1;i<=NF;i++){split($i,_,"=");if(!_[2])next;}print $0}' a.txt
AB=123;CD=456;EF=6789;GH=456;IJ=789;KL=1011

# 4  
Old 11-14-2012
Thanks a lot Pamu...

I tried the code and it was working fine...

---------- Post updated at 09:08 AM ---------- Previous update was at 09:07 AM ----------

Thanks itkamaraj for your reply.

---------- Post updated at 09:37 AM ---------- Previous update was at 09:08 AM ----------

In all these cases if any one parameter is null it will not pull values. I have to get values if any one parameter (GH, IJ, KL) is not null.

Please help.
# 5  
Old 11-14-2012
Try
Code:
awk '/GH=[0-9]+;|IJ=[0-9]+;|KL=[0-9]+$/' file

which is equivalent to
Code:
grep -E 'GH=[0-9]+;|IJ=[0-9]+;|KL=[0-9]+$' file

# 6  
Old 11-14-2012
Thanks RudiC for the quick reply.

I tried both the codes. It is pulling the value if IJ is having a value and GH and KL is null. In all other cases (GH with value and all other null/ KL with value and all other null) it is not pulling the value.

The file looks something like this
are or
MI=a12345;MR=b1234;CI=b123;CI=1234;CN=45;A=49;TR=21;EC=130;ED=We again.;BR=;BRC=;BRD=

are or
MI=a12345;MR=b1234;CI=b123;CI=1234;CN=45;A=49;TR=21;EC=130;ED=We again.;BR=1234;BRC=00;BRD=Good

I need to pull entire file if any parameters BR, BRC, or BRD have non null values.
# 7  
Old 11-14-2012
Assuming you have three fields to check only..

Code:
awk -F ";" '{a=0;for(i=1;i<=NF;i++){if($i ~ /BR|BRC|BRD/){split($i,P,"=");if(P[2] == ""){a++}}}{if(a==3){$0="blank"}}}1' OFS=";" file

This User Gave Thanks to pamu For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep multiple words in a file with help of fixed string switch

I have multiple strings in a file which have special character $, when i search strings by ignoring $ with \ using single quotes it returns empty results. My search strings are set char_1($lock) and set new_char_clear_3($unlock) I tried searching with but it returns empty results.However... (3 Replies)
Discussion started by: g_eashwar
3 Replies

2. Shell Programming and Scripting

sed parser behaving strange on replacing multiple words in multiple files

I have 4000 files like $cat clus_grp_seq10_g.phy 18 1002 anig_OJJ65951_1 ATGGTTTCGCAGCGTGATAGAGAATTGTTTAGGGATGATATTCGCTCGCGAGGAACGAAGCTCAATGCTGCCGAGCGCGAGAGTCTGCTAAGGCCATATCTGCCAGATCCGTCTGACCTTCCACGCAGGCCACTTCAGCGGCGCAAGAAGGTTCCTCG aver_OOF92921_1 ... (1 Reply)
Discussion started by: sammy777888
1 Replies

3. Shell Programming and Scripting

Confused with grep for multiple words

Hi guys and gals, I have many files that contains many lines of data. I am trying to find a needle in a haystack in that I'm looking only for files that contain word1 AND word2. I'm using ... ... but this is finding files that contains word1 OR word2. No good for me. How can I grep to... (7 Replies)
Discussion started by: bbbngowc
7 Replies

4. Shell Programming and Scripting

grep - Extracting multiple key words from stdout

Hello. From command line, the command zypper info nxclient return a bloc of data : linux local # zypper info nxclient Loading repository data... Reading installed packages... Information for package nxclient: Repository: zypper_local Name: nxclient Version: 3.5.0-7 Arch: x86_64... (7 Replies)
Discussion started by: jcdole
7 Replies

5. Shell Programming and Scripting

Grep multiple words in a single file

Hello All, I'm a newbie/rookie in Shell scipting. I've done oracle export of a table using Export utility. When I do export, it generates 2 files. 1> .dmp file 2> .dmp.log file. In .dmp.log file I have to search for a sentence which goes like '0 records have been inserted' and then... (2 Replies)
Discussion started by: samfisher
2 Replies

6. Shell Programming and Scripting

grep multiple words in a single line

Hi.. How to search for multiple words in a single line using grep?. Eg: Jack and Jill went up the hill Jack and Jill were best friends Humpty and Dumpty were good friends too ---------- I want to extract the 2nd statement(assuming there are several statements with... (11 Replies)
Discussion started by: anduzzi
11 Replies

7. UNIX for Dummies Questions & Answers

search multiple words using grep

Hi frnds i want to desplay file names that should be word1 and word2 ex : i have 10 *.log files 5 files having word1 and word2 5 files having only word1, i have used below command egrep -l 'word1|word2' *.log its giving all 10 files, but i want to display only 5... (20 Replies)
Discussion started by: pb18798
20 Replies

8. UNIX for Dummies Questions & Answers

Using /dev/null with grep and find

Hi, I am trying to display the filename in which a string was found after using find and grep. For this after some googling I found that this works: find -name "*.java" -exec grep "searchStr" {} /dev/null \; I wanted to know the difference between the above and the following: find -name... (0 Replies)
Discussion started by: gaurav_s
0 Replies

9. Shell Programming and Scripting

grep on multiple words to match text template

hi, I have few text templates as a simple ex: template 1 city Name: zip code: state Name: template2: employee Name: Phone number: I wish to grep on given text file and make sure the text file matches one of these templates. Please give your ideas. (6 Replies)
Discussion started by: rider29
6 Replies

10. UNIX for Dummies Questions & Answers

GREP a string with NULL Character

Does anyone know how to use grep/egrep to find a string that contains a null character? i.e.: the string looks like this: null0001nullN well I want to be able to : grep '0001N' is there a wildcard character or something that I can put in the grep to include the nulls? (3 Replies)
Discussion started by: weerich
3 Replies
Login or Register to Ask a Question