awk + pattern search with regular expression

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk + pattern search with regular expression
# 1  
Old 02-17-2010
awk + pattern search with regular expression

Hi ,

I have a file with "|" (pipe) as a delimeter. I am looking for the record count where 5th field is a number with 15 digit length only.

all the records with above requirement is valid rest all are invalid. I need count of valid records and invalid records.

Can anyone please help
# 2  
Old 02-17-2010
awk -F\| '$5 ~ /^[0-9]{15}$/ { C++ }
END { print "Correct:  " C+0; print "Wrong: " NR - C }
' input_file

# 3  
Old 02-17-2010
Thanks for quick response.

But i have already tried similar thing but its still giving all the records as invalid which are exactly not.
# 4  
Old 02-17-2010

Please post a sample of your input data.

# 5  
Old 02-17-2010
251|239|07807837304|234332108514613|UNKNOWN|0|447981296445            |00001000|5|21||4040|4700|0|0|0|2010-02-16 23:36:35|47.0|47.0|000000|2|871|871|0|0|ap-prepaidsessio|0|0000000000000|2010-02-16 23:36:35|0|0|0|0|0|2010-02-16 23:54:01|815602|0|67123384|A|N|||N||0||0.0||0|||58409557|Y|Y|0|3845856|
30|239|07890004717|23433|UNKNOWN|0|447842654598            |000020120|1949|0|||||0|0|2010-02-16 23:38:48|0.0|0.0|002100|2|91|91|0|0|447842654598|0|0000000000000|2010-02-16 23:38:48|0|0|4108|0|0|2010-02-16 23:54:01|815602|0|23221133|A|N|||N||0||0.0||0|||23221022|Y|Y|0|3845856|
251|239|07800719062|234339811447329|UNKNOWN|0|447981296445            |00001000|76|21||5040|9300|0|0|0|2010-02-16 23:36:39|93.0|93.0|000000|80|871|871|0|0|ap-prepaidsessio|0|0000000000000|2010-02-16 23:36:39|0|0|0|0|0|2010-02-16 23:54:01|815602|0|31215218|A|N|||N||0||0.0||0|||31128259|Y|Y|0|3845856|
30|239|07581019247|23433|UNKNOWN|0|447973018951            |000020100|380|0|||||0|0|2010-02-16 23:38:48|0.0|0.0|002100|2|90|90|0|0|447975993569|0|0000000000000|2010-02-16 23:38:48|0|0|4108|0|0|2010-02-16 23:54:01|815602|0|68486442|A|N|||N||0||0.0||0|||59745744|Y|Y|0|3845856|
30|239|07929481292|23433|UNKNOWN|0|447846375536            |00002000|15|0||2073|||0|0|2010-02-16 23:38:49|0.0|0.0|002100|2|91|91|0|0|447846375536|0|0000000000000|2010-02-16 23:38:49|0|0|4108|0|0|2010-02-16 23:54:01|815602|0|67432661|A|N|||N||0||0.0||0|||58712609|Y|Y|0|3845856|
1|239|07896681517|234334905955530|355176032676650|134|0447503788274|000010600|926|21|||180|60|0|0|2010-02-16 23:36:01|180.0|180.0|001100|2|3|3|0|0|447503788274|0|0000000000000|2010-02-16 23:36:01|0|0|0|6|0|2010-02-16 23:54:01|815602|0|63760018|A|N|||N||0||0.0||0|||55147472|Y|Y|0|3845856|
1|239|07970459763|234332007934385|35686402900035|134|0447973015951|000010200|52|21|||60|20|0|0|2010-02-16 23:38:57|60.0|60.0|001100|2|2|2|0|0|447989702325|0|0000000000000|2010-02-16 23:38:57|0|0|0|6|0|2010-02-16 23:54:01|815602|0|66517576|A|N|||N||0||0.0||0|||57818716|Y|Y|0|3845856|
1|239|07875208615|234334109364652|357097008573710|134|0447973018951|00001000|34|21||2094|60|0|0|0|2010-02-16 23:39:01|60.0|60.0|001100|2|2|2|0|0|447896731221|0|0000000000000|2010-02-16 23:39:01|0|0|0|6|0|2010-02-16 23:54:01|815602|0|35761130|A|N|||N||0||0.0||0|||35551924|Y|Y|0|3845856|
1|239|07870669563|234332003666468|35557602905962|134|0353834026141|000010800|324|21|||240|80|0|0|2010-02-16 23:35:25|240.0|240.0|001100|2|800|800|0|0|353834026141|0|0000000000000|2010-02-16 23:35:25|0|0|0|6|0|2010-02-16 23:54:01|815602|0|63698172|A|N|||N||0||0.0||0|||55087027|Y|Y|0|3845856|
1|239|07792884405|234334403667880|358568035578590|134|0447973014951|000010200|432|21|1|-2|0|20|0|0|2010-02-16 23:27:51|720.0|720.0|001100|2|60|60|0|0|447964118503|0|0000000000000|2010-02-16 23:27:51|0|0|0|6|0|2010-02-16 23:54:01|815602|0|30812176|A|N|||N||0||0.0||0|||30731698|Y|Y|0|3845856|

Out of the above record nly 3 records are valid (highlighted in RED.)

Please help
# 6  
Old 02-17-2010

Based on your input, the output I get is:

$ ./Test
Correct:  3
Wrong: 7

# 7  
Old 02-17-2010
Please find below the code and output :

awk -F\| '$5 ~ /^[0-9]{15}$/ { C++ }
END { print "Correct:  " C+0; print "Wrong: " NR - C }
> END { print "Correct:  " C+0; print "Wrong: " NR - C }
> ' aa
Correct:  0
Wrong: 10

I am working on solaris box, is it an issue ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular Expression repeat pattern

Hi, I'm struggling with very very simple task but dont know where I'm going wrong. Have the following file numbers.txt 1 12 123 1234 12345 123456 1234567 12345678 123456789 1234567890 9876543210 987654321 98765432 9876543 987654 98765 (1 Reply)
Discussion started by: bobbygsk
1 Replies

2. Shell Programming and Scripting

awk regular expression search

Hi All, I would like to search a regular expression by passing as an i/p variableto AWK. For Example :: (7 Replies)
Discussion started by: Girish19
7 Replies

3. Shell Programming and Scripting

Pattern search (regular expression in UNIX)

Hello , Could anyone help me to define the string in regular expression way . Below is my string \rtf1\ansi\deff0{\fonttbl{\f0\fswiss Helv;}{\f1\fnil MS Sans Serif;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\lang1033\f0\fs16 The string will always start as \rtf1 and... (6 Replies)
Discussion started by: Pratik4891
6 Replies

4. Shell Programming and Scripting

passing a regex as variable to awk and using that as regular expression for search

Hi All, I have a sftp session log where I am transferring multi files by issuing "mput abc*.dat". The contents of the logfile is below - ################################################# Connecting to Changing to: /home/dasd9x/testing1 sftp> mput abc*.dat Uploading... (7 Replies)
Discussion started by: k_bijitesh
7 Replies

5. Shell Programming and Scripting

How can awk search a string without using regular expression?

Hello, Awk seem treat the pattern as regular expression, how can awk search not using regular expression? e.g. just represent for "", not "A" or "a" . I don't want to add backslash . (2 Replies)
Discussion started by: 915086731
2 Replies

6. Shell Programming and Scripting

Regular Expression for Random pattern

What would be the regular expression that can search for a Pattern, having 8 characters out of which atleast 1 digit, 1 lower case, 1 upper case letter and 1 special character must be there. But these can occur at any place randomly. Please help me out. I'm using find $dir -name "*.txt" -exec... (0 Replies)
Discussion started by: Pradeep Kr.
0 Replies

7. Shell Programming and Scripting

Validate time pattern using regular expression

Hi, I am new to scripting. please help me in validating the user entered time Pattern Here is the program #!/bin/bash validateTimeFormat() { checkTime=$1 timePattern="::" if ] then echo "Valid time pattern" return 1 else echo "InValid time pattern" return -1 fi } echo "Please... (2 Replies)
Discussion started by: vvenu88
2 Replies

8. Shell Programming and Scripting

validate date pattern using Regular Expression

Hi, i am java guy and new to unix. I want to validate date pattern using Regex expression here is the sample program i have written. #!/bin/sh checkDate="2010-04-09" regex="\\d{4}-\\d{2}-\\d{2}\$" echo $regex if ] then echo "OK" else echo "not OK" fi But the ouput is... (2 Replies)
Discussion started by: vvenu88
2 Replies

9. Shell Programming and Scripting

Perl Regular Expression Word Search

I'm trying to have my perl script telnet into the network device execute a command then dump the output of the command into a variable. The script then greps for the word "STANDBY". I can't seem to get the script to print out the output because it seems that the script can't find the word... (1 Reply)
Discussion started by: xmaverick
1 Replies

10. Shell Programming and Scripting

Regular Expression to exclude pattern

Hi All I am using regular expressions to determine how to group certain data. I've included an example of the data below. USD_SPTR_2Y_725.5_PUT_EUROPEAN_09Q1|USD||European| CAD_NDX_10Yx1Y_5.5_PUT_EUROPEAN_09Q1|CAD||European| The regular expressions I am using is as follows and this is... (5 Replies)
Discussion started by: kingpin2502
5 Replies
Login or Register to Ask a Question

Featured Tech Videos