[awk]compare a number in a string with a list


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [awk]compare a number in a string with a list
# 1  
Old 02-21-2011
[awk]compare a number in a string with a list

Hi,

I have a program written in awk and I want to extend it to do another task.

My program is a list of CVS log reports of a repository. For each file, I have some fields. One of the fields is the comment field. I want to know how I can check if a comment (which is a free text field) contains a number and if it does, I want to check if that number exists in another list of numbers (taken as input from another file).

For example,
If the list of numbers is
Code:
100
101
102
103

And I have the following log data

Code:
RCS file: /cvsroot/eclipse/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/util/SourcePositionImpl.java,v
head: 1.10
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 12;    selected revisions: 1
description:
=============================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/util/TypesUtil.java,v
head: 1.13
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 15;    selected revisions: 2
description:
----------------------------
revision 1.13
date: 2008-01-01 20:28:39 -0600;  author: wharley;  state: Exp;  lines: +1 -16;  commitid: 537d477af6d64567;
Bug 100 - partial fix.  
=============================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/internal/util/Visitors.java,v
head: 1.7
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 8;    selected revisions: 1
description:
=============================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.apt.core/src/org/eclipse/jdt/apt/core/util/AptPreferenceConstants.java,v
head: 1.16
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 17;    selected revisions: 4
description:
----------------------------
revision 1.16
date: 2008-01-29 16:55:45 -0600;  author: wharley;  state: Exp;  lines: +1 -1;  commitid: 69f6479faef04567;
This is also some sample text. bug 101, followed by some more text. 
----------------------------
revision 1.14
date: 2007-10-15 15:46:44 -0500;  author: wharley;  state: Exp;  lines: +12 -1;  commitid: 724c4713d1b24567;
This is some sample text. Bug 102: some text
=============================================================================

After the word "description", there can be 0, 1 or more commit data. In each commit data, I want to get the number from it, which can be anywhere in the 3rd or 4th line after the field separator "----------". And I want to compare that number with the list above and if it turns to be true, take some actions.

Can anyone help me how to do this. If needed, I can also send the already existing awk code I have.

Thanks,
Sandeep
# 2  
Old 02-21-2011
What output do you expect/want given the input files you posted?
# 3  
Old 02-21-2011
Hi Radoulov,

I want to actually increment a counter everytime I get a match. The final count value is what I need. So every time I see a number in the commit message, I will compare with the list. If the number is present, count++ and then finally output count.

Thanks,
Sandeep
# 4  
Old 02-21-2011
OK,
could you please specify the pattern? How exactly the lines you're interested in look like?
Where in your sample above is the commit data?
# 5  
Old 02-21-2011
For the current file I have, the output looks like this,

Code:
Filename    Selected Revisions    Number of Authors       Total Lines Added
DebugElement.java     0
DebugEvent.java         2                           1                               3
DebugPlugin.java       16                           3                              158
....

and so on.
Now, I need another column named Number of Bugfixes, and the number that I count for each file, will be the value there.

So for each file (each record in awk separated by ======), I have to get a count.

Thanks
# 6  
Old 02-21-2011
This sounds different than the original requirement ...
What the number list has to do with it?
# 7  
Old 02-21-2011
The data that I showed in the previous post is the output format I have. I need another column to this called "number of bugfixes". To get that number, I have a count.

I also have a list of bugs (but it is not classified at file level). I will use this list for comparison.

To find the number of bugs per file, I increment the count every time I see that a number in the commit message is also present in the list of

pseudo code would be
1) for each file,
do
*initialize count to 0
*for each commit message,
-find if commit message has a number in it.
-If it does, compare number with the numbers in list.
-If there is a match, increment count.
* Assign numberOfFixes=count;
done

In the code I already have, I am finding the other data I showed for each file in this way. and I want to do this task also in similar way.

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Concatenate a string and number and compare that with another string in awk script

I have below code inside my awk script if ( $0 ~ /SVC IN:/ ) { svc_in=substr( $0,23 , 3); if (msg_start == 1 && msg_end == 0) { msg_arr=$0; } } else if ( $0 ~ /^SVC OUT:/ ) { svc_out=substr( $0, 9, 3); if (msg_start == 1 && msg_end == 0) ... (6 Replies)
Discussion started by: bhagya123
6 Replies

2. Shell Programming and Scripting

Compare string length to a number

Hi, I want to compare strings length to a number but i am getting error. I want first name should be length of 8. Please help. #bin !/bin/bash clear echo -n "Enter name " read name IFS=_ ary=($name) for key in "${!ary}"; do echo "$key${ary}"; done ##First name should be equal to 8... (8 Replies)
Discussion started by: rajneesh4U
8 Replies

3. Shell Programming and Scripting

Pass column number as variable to awk and compare with a string.

Hi All, I have a file test.txt. Content of test.txt : 1 vinay se 2 kumar sse 4 kishore tl I am extracting the content of file with below command. awk '$2 ~ "vinay" {print $0}' test.txt Now instead of hardcoding $2 is there any way pass $2 as variable and compare with a... (7 Replies)
Discussion started by: Girish19
7 Replies

4. Shell Programming and Scripting

String compare using awk - what am I doing wrong?

Hi all, I was doing some string manipulation in my script and wanted to try using awk. However, I have been stuck with string compare. A simplified form of my conundrum is given below: The below prints expected result (prints "Completed because that is the second element"): $ echo... (5 Replies)
Discussion started by: faraway
5 Replies

5. Shell Programming and Scripting

awk - how to compare part of the string?

Need help for awk.. file will have comma separated numbers, I need check digits before 10 numbers eg ( 001)1234567890 Basically want to check country code of a mobile number. eg: abc,def,data, data,0011234567890, data,data Script should be checking country code with 001, I will pass... (10 Replies)
Discussion started by: vegasluxor
10 Replies

6. Shell Programming and Scripting

awk if statement to evaluate string and compare

I have the following simplified code that I am planning on putting into a larger shell script. I have been butchering it to try and make work amongst google searches and reading awk documentation. amixer sset Master toggle | awk '{ if ( /^ Front Left/ { print $7 } == // ) print "MUTED" }'I... (2 Replies)
Discussion started by: jelloir
2 Replies

7. Shell Programming and Scripting

awk to compare hex number

$ awk 'BEGIN{ pat111=0x1000000002E3E02; snBegin=0x1000000002E3E01; if (pat111<=snBegin) printf "a\n"}' a Result is not correct. Looks like the number is too big. Any idea? Thx! Please use code tags <- click the link! (2 Replies)
Discussion started by: carloszhang
2 Replies

8. Shell Programming and Scripting

Compare strings between 2 arrays and print number in AWK

Hi to everyone, Please some help over here. Hi have array a with 6 elements and array b with 3 elements as shown inside BEGIN{} statement. I need help to get the correct sintax (the part in red) to compare if string from array b is in array a and print the number related for each match.... (3 Replies)
Discussion started by: Ophiuchus
3 Replies

9. Shell Programming and Scripting

awk conditional expression to compare field number and variable value

Hi, I'm trying to compare the value in a field to the value in a variable using awk. This works: awk '$7 == "101"'but this is what I want (and it doesn't work): value=101 awk '$7 == "$value"' Any help or insight on this would be great. Thanks in advance. (1 Reply)
Discussion started by: goodbenito
1 Replies

10. Shell Programming and Scripting

String compare with list in shell script

Hi , I am new to shell scripting. below is my requirement : 1) while running my .sh i will pass a string 2) i have to extract a folder name under a /config folder 3) i need to compare a input string in the folder name list 4) if that is true i have to continue my job else i have to... (2 Replies)
Discussion started by: rajinavaneethan
2 Replies
Login or Register to Ask a Question