Comparison of fields then increment a counter reading line by line in a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comparison of fields then increment a counter reading line by line in a file
# 1  
Old 10-02-2013
Comparison of fields then increment a counter reading line by line in a file

Hi,


i have a scenario were i should compare a few fields from each line then increment a variable based on that.

Example file
Code:
989878|8999|Y|0|Y|N|V
989878|8999|Y|0|N|N|V
989878|8999|Y|2344|Y|N|V

i have 3 conditions to check and increment a variable on every line
Code:
condition 1  if ( $3 =='Y' && $4==0 && $6=N)
then variable1++
cond2 if ( $3 =='Y' && $6=N)
then varable2++

Desired output:

Code:
count of variable1 and count of variable2 and

My script is pretty big which extracts data from db into a unl file then am doing this condition check and few other, only thing am not comfortable is what i have mentioned please help

Last edited by Scrutinizer; 10-02-2013 at 10:11 PM.. Reason: code tags also for data samples
# 2  
Old 10-02-2013
Code:
awk -F '|' '  $3 =="Y" && $4=="0" && $6=="N" {var1++}
                 $3 =="Y" && $6=="N"  {var2++}
                 {next}
                 END{print "condition 1", var1, " condition2", var2}' inputfile

Note for every cond1==true : cond2 is also true, if you meant for them to be mutually exclusive the above does not work. This will:
Code:
awk -F '|' '  $3 =="Y" && $4=="0" && $6=="N" {var1++; next}
                 $3 =="Y" && $6=="N"  {var2++}
                 {next}
                 END{print "condition 1", var1, " condition2", var2}' inputfile

This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 10-03-2013
hey Jimm

thanks for looking at the post and repsponding

i think i confused you with cond 1 and cond2 , the thing is i have 2-3 conditions and in all instances i will have to get the count of how many times it has occurred, but i tried it prints only one value var1 and not var2 or var3

Code:
awk -F '|' '  $3 =="Y" && $4=="0" && $6=="N" {var1++; next}
                 $3 =="Y" && $6=="N"  {var2++}
                 {next}
                 END{print "condition 1", var1, " condition2", var2}' inputfil


Last edited by Don Cragun; 10-03-2013 at 01:21 AM.. Reason: Remove extraneous PHP tags
# 4  
Old 10-03-2013
The exclusive stuff with next in
Code:
awk -F '|' '
  $3 =="Y" && $4=="0" && $6=="N" {var1++}
  $3 =="Y" && $6=="N" {var2++}
  END {
  print "condition1", var1+0
  print "condition2", var2+0
  }
' inputfile

This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 10-03-2013
Like this?
Code:
awk -F"|" '{
	if ($3=="Y" && $4==0 && $6=="N")
		variable1++
	if ($3 =="Y" && $6=="N")
		variable2++
	}
	END {print "variable1=" variable1 "\nvariable2=" variable2}'  inputfil

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

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Reading a file line by line and print required lines based on pattern

Hi All, i want to write a shell script read below file line by line and want to exclude the lines which contains empty value for MOUNTPOINT field. i am using centos 7 Operating system. want to read below file. # cat /tmp/d5 NAME="/dev/sda" TYPE="disk" SIZE="60G" OWNER="root"... (4 Replies)
Discussion started by: balu1234
4 Replies

2. Shell Programming and Scripting

Reading line by line from live log file using while loop and considering only those lines start from

Hi, I want to read a live log file line by line and considering those line which start from time stamp; Below code I am using, which read line but throws an exception when comparing line that does not contain error code tail -F /logs/COMMON-ERROR.log | while read myline; do... (2 Replies)
Discussion started by: ketanraut
2 Replies

3. Shell Programming and Scripting

Reading text file, comparing a value in a line, and placing only part of the line in a variable?

I need some help. I would like to read in a text file. Take a variable such as ROW-D-01, compare it to what's in one line in the text file such as PROD/VM/ROW-D-01 and only input PROD/VM into a variable without the /ROW-D-01. Is this possible? any help is appreciated. (2 Replies)
Discussion started by: xChristopher
2 Replies

4. Shell Programming and Scripting

How to start reading from the nth line till the last line of a file.

Hi, For my reuirement, I have to read a file from the 2nd line till the last line<EOF>. Say, I have a file as test.txt, which as a header record in the first line followed by records in rest of the lines. for i in `cat test.txt` { echo $i } While doing the above loop, I have read... (5 Replies)
Discussion started by: machomaddy
5 Replies

5. UNIX for Dummies Questions & Answers

Parsing file, reading each line to variable, evaluating date/time stamp of each line

So, the beginning of my script will cat & grep a file with the output directed to a new file. The data I have in this file needs to be parsed, read and evaluated. Basically, I need to identify the latest date/time stamp and then calculate whether or not it is within 15 minutes of the current... (1 Reply)
Discussion started by: hynesward
1 Replies

6. Shell Programming and Scripting

[Solved] Problem in reading a file line by line till it reaches a white line

So, I want to read line-by-line a text file with unknown number of files.... So: a=1 b=1 while ; do b=`sed -n '$ap' test` a=`expr $a + 1` $here do something with b etc done the problem is that sed does not seem to recognise the $a, even when trying sed -n ' $a p' So, I cannot read... (3 Replies)
Discussion started by: hakermania
3 Replies

7. Shell Programming and Scripting

reading a file inside awk and processing line by line

Hi Sorry to multipost. I am opening the new thread because the earlier threads head was misleading to my current doubt. and i am stuck. list=`cat /u/Test/programs`; psg "ServTest" | awk -v listawk=$list '{ cmd_name=($5 ~ /^/)? $9:$8 for(pgmname in listawk) ... (6 Replies)
Discussion started by: Anteus
6 Replies

8. Shell Programming and Scripting

KSH: Reading a file line by line into multiple arrays

Hi - I have a file that contains data in this format:- #comment value1 value2 value3 #comment value4 value5 value6 value7 #comment value8 value9 I need to read value1, value2 and value3 into one array, value4 value5 value6 and value7 into another array and value8 and value9 into a 3rd... (2 Replies)
Discussion started by: sniper57
2 Replies

9. Shell Programming and Scripting

Reading a file line by line and processing for each line

Hi, I am a beginner in shell scripting. I have written the following script, which is supposed to process the while loop for each line in the sid_home.txt file. But I'm getting the 'end of file' unexpected for the last line. The file sid_home.txt gets generated as expected, but the script... (6 Replies)
Discussion started by: sagarparadkar
6 Replies
Login or Register to Ask a Question