awk pattern matching


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk pattern matching
# 15  
Old 10-09-2014
Ok try with Parentheses 

Code:
awk 'FNR==1{++i}{print ( ( i == 1 ) ? $1 : $3+0 ) }' f1 FS=',' f2

Also post the result of

Code:
awk --version

# 16  
Old 10-09-2014
IBM

Code:
 awk 'FNR==1{++i}{print ( ( i == 1 ) ? $1 : $3+0 ) }' f1 FS=',' f2

Code:
971507520787
9.71508e+11
333

cat f1
Code:
971507520787

cat f2
Code:
1,2,0971507520787
2,2,333

I am using awk on AIX. Its not giving awk version information.

Last edited by Scrutinizer; 10-09-2014 at 04:02 AM.. Reason: Additional code tags for data
# 17  
Old 10-09-2014
Quote:
Originally Posted by vegasluxor
Code:
 awk 'FNR==1{++i}{print ( ( i == 1 ) ? $1 : $3+0 ) }' f1 FS=',' f2

971507520787
9.71508e+11
333

cat f1
971507520787

cat f2
1,2,0971507520787
2,2,333

I am using awk on AIX. Its not giving awk version information.
Its clear that your file2 is different from the one we are seeing here.
# 18  
Old 10-09-2014
IBM

Here is the screenshot. Is there any other awk solution i can try? Please advise and thanks for your support!

Code:
[test@test]$ cat f1
971507520787
[test@test]$ cat f2
1,2,0971507520787
2,2,333
[test@test]$ awk 'FNR==1{++i}{print ( ( i == 1 ) ? $1 : $3+0 ) }' f1 FS=',' f2
971507520787
9.71508e+11
333
[test@test]$

# 19  
Old 10-09-2014
Quote:
Originally Posted by vegasluxor
Here is the screenshot. Is there any other awk solution i can try? Please advise and thanks for your support!

Code:
[test@test]$ cat f1
971507520787
[test@test]$ cat f2
1,2,0971507520787
2,2,333
[test@test]$ awk 'FNR==1{++i}{print ( ( i == 1 ) ? $1 : $3+0 ) }' f1 FS=',' f2
971507520787
9.71508e+11
333
[test@test]$



Did you try perl script I had given ?

can you post the output of od -c f2
This User Gave Thanks to Akshay Hegde For This Post:
# 20  
Old 10-09-2014
Yes! perl solution worked! thanks Smilie Please let me know, if i want to change column number of second file, where the change will be in in perl code? Sorry for the dummy question

Code:
[test@test]$ cat script.pl
#!/usr/bin/perl

use strict;
use warnings;

die "Usage: $0 File1 File2\n" if @ARGV != 2;

my $file2 = pop;

# Read first file
my %seen;
while (<>) { my @F = split; $seen{$F[0]+0} = 1;}

# Compare 2nd file with first file hash
local @ARGV = $file2;
while (<>) { my @F = split(",",$_); print  if !$seen{$F[2]+0};}

[test@test]$
[test@test]$
[test@test]$ script.pl f1 f2
2,2,333
[test@test]$
[test@test]$ cat f1
971507520787
[test@test]$ cat f2
1,2,0971507520787
2,2,333
[test@test]$

Output of od

Code:
[test@test]$ od -c f2
0000000    1   ,   2   ,   0   9   7   1   5   0   7   5   2   0   7   8
0000020    7  \n   2   ,   2   ,   3   3   3  \n
0000032
[test@test]$

Thank a lot Akshay !! Smilie

Last edited by vegasluxor; 10-09-2014 at 04:43 AM..
# 21  
Old 10-09-2014
Your od looks fine to me, You must be using mawk

See here

Ideone.com - Online Compiler and IDE >> C/C++, Java, PHP, Python, Perl and 40+ other compilers and interpreters

Click on Run button to see output

---------- Post updated at 02:23 PM ---------- Previous update was at 02:17 PM ----------

Modify column number here

Code:
while (<>) { my @F = split(",",$_); print  if !$seen{$F[2]+0};}

0 -> column1
1 -> column2
2 -> column3

and so on

---------- Post updated at 02:24 PM ---------- Previous update was at 02:23 PM ----------

Quote:
Originally Posted by vegasluxor
Yes! perl solution worked! thanks Smilie Please let me know, if i want to change column number of second file, where the change will be in in perl code? Sorry for the dummy question

Code:
[test@test]$ cat script.pl
#!/usr/bin/perl

use strict;
use warnings;

die "Usage: $0 File1 File2\n" if @ARGV != 2;

my $file2 = pop;

# Read first file
my %seen;
while (<>) { my @F = split; $seen{$F[0]+0} = 1;}

# Compare 2nd file with first file hash
local @ARGV = $file2;
while (<>) { my @F = split(",",$_); print  if !$seen{$F[2]+0};}

[test@test]$
[test@test]$
[test@test]$ script.pl f1 f2
2,2,333
[test@test]$
[test@test]$ cat f1
971507520787
[test@test]$ cat f2
1,2,0971507520787
2,2,333
[test@test]$

Output of od

Code:
[test@test]$ od -c f2
0000000    1   ,   2   ,   0   9   7   1   5   0   7   5   2   0   7   8
0000020    7  \n   2   ,   2   ,   3   3   3  \n
0000032
[test@test]$

Thank a lot Akshay !! Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pattern matching using awk

Hi I am trying to find a pattern match with column one containing 3 numbers. input file tmp.lst abcd456|1|23123|123123|23423 kumadff|a|dadfadf|adfd|adfadfadf xxxd999|d|adfdfs|adfadf|adfdasfadf admin|a|dafdf|adfadfa||| output file tmp4.lst abcd456|1|23123|123123|23423... (3 Replies)
Discussion started by: vamsekumar
3 Replies

2. Shell Programming and Scripting

awk pattern matching name in records

Hi, I'm very new to these forums. I was wondering if someone could help an AWK beginner with a pattern matching an actor to his appearance in movies, which would be stored as records. Let's say we have a database of 4 movies (each movie a record with name, studio + year, and actor fields with... (2 Replies)
Discussion started by: Jill Ceke
2 Replies

3. Shell Programming and Scripting

awk pattern matching

can somebody provide me with some ksh code that will return true if my the contents in my variable match anyone of these strings ORA|ERROR|SP2 variable="Error:ORA-01017: Invalid username/password; logon denied\nSP2-0640:Not connected" I tried this and it does not seem to work for me ... (3 Replies)
Discussion started by: BeefStu
3 Replies

4. Shell Programming and Scripting

AWK pattern matching on loop

Hi, I am still a beginner on shell scripting so please bear with me. What i am trying to do is filter my logfile based on some ID on field 24 which is defined in array. The filter result output will be moved to my log folder with the same name. The problem is when not using loop, this command... (2 Replies)
Discussion started by: howielim
2 Replies

5. UNIX for Dummies Questions & Answers

awk - pattern matching?

Hello all, I am trying to sort thru a database and print all the customers whose first names are only four characters. I just want to pull the first name only from the database. the database records appear like this in file: Mike Harrington:(510) 548-1278:250:100:175; first is name Mike... (4 Replies)
Discussion started by: citizencro
4 Replies

6. Shell Programming and Scripting

AWK:- matching pattern search

Dear Friends, I have a flat file. To pick certain details we have written an awk where we are facing difficulty. Sample of flat file. line 1 line 2 line 3 line 4 line 5 line 6 line 7 line 8 line 9 line 10 line 11 line 12 line 13 line 14 (Matching pattern "Lkm_i-lnr:"can be... (4 Replies)
Discussion started by: anushree.a
4 Replies

7. Shell Programming and Scripting

Awk -simple pattern matching

Find bumblebee and Megatron patterns (input2) in input1. If it is + read input1 patterns from Left to Right if it is - read input1 patterns from Right to Left Y= any letter (A/B/C/D) input1 c1 100 120 TF01_X1 + AABDDAAABDDBCADBDABC c2 100 120 TF02_X2 - AABDDAAABDDBCBACDBBC... (2 Replies)
Discussion started by: bumblebee_2010
2 Replies

8. Shell Programming and Scripting

AWK pattern matching

Hi, How can I tell awk to print all lines/columns if column number 5 contains the word Monday? I have tried nawk -F, '$5==Monday' OFS=, myfile > outputfile but that doesn't work (I am a newb!!) Thanks, (7 Replies)
Discussion started by: keenboy100
7 Replies

9. Shell Programming and Scripting

pattern matching using awk.

Dear Team, How do we match two patterns on the same line using awk?Are there any logical operators which i could use in awk like awk '\gokul && chennai\' <filename> Eg: Input file: gokul,10/11/1986,coimbatore. gokul,10/11/1986,bangalore. gokul,12/04/2008,chennai.... (2 Replies)
Discussion started by: gokulj
2 Replies

10. Shell Programming and Scripting

AWK pattern matching, first and last

In a nutshell, I need to work out how to return the last matching pattern from an awk //,// search. I can bring back the first, but am unsure how to obtain the last, and a simple tail won't work as the match could be over multiple lines. Secondly I would like some way of pattern matching, a... (10 Replies)
Discussion started by: smb_uk
10 Replies
Login or Register to Ask a Question