Sponsored Content
Top Forums Shell Programming and Scripting awk: matching and not matching Post 302572859 by maverick72 on Friday 11th of November 2011 10:06:53 AM
Old 11-11-2011
awk: matching and not matching

Hello all,

simple matching and if not match problem that i can't figure out.
Code:
file1
hostname:
30 10 * * * /home/toto/start  PROD instance_name1 -p
00 9 * * * /home/toto/start  PROD instance_name2 -p
15 8 * * * /home/toto/start  PROD instance_name3 -p

hostname2:
00 8 * * * /home/toto/start  PROD instance_name4 -p
10 8 * * * /home/toto/start  PROD instance_name5 -p

hostname3:
45 3 * * * /home/toto/start PROD instance_name7 -p

hostname4:
33 0 * * * /home/toto/start PROD instance_name6

file2
backuphostname:
30 10 * * * /home/toto/start  PROD instance_name1 -b
00 9 * * * /home/toto/start  PROD instance_name2 -b
15 8 * * * /home/toto/start  PROD instance_name3 -b

backuphostname2:
30 15 * * * /home/toto/start  PROD instance_name4 -b
00 10 * * * /home/toto/start  PROD instance_name5 -b

Now the thing is to match the instance name so i can know which host is backup of which host as far as instance_name. That seems to work ok with my code.

What i can't figure out through is the exception... instance_name7 doesn't have a backup in file2.

Code:
bash$ awk -f list.awk file1 file2
PROD: hostname2 instance_name4 -p BACKUP: backuphostname2 instance_name4 -b
PROD: hostname3 instance_name7 NO BACKUP

My code now:

Code:
BEGIN {
    FS="\n"
    RS=""
}
NR == FNR {
    for (i = 2; i <= NF; i++)
        split($i,prodsle," ")
            prod[$1]=prodsle[8]
            next
}
{
    for (i = 2; i <= NF; i++)
        split($i,backupsle," ")
            backup[$1]=backupsle[8]
            for ( x in prod )
                if ( backupsle[8] == prod[x] ) 
                    printf "%s %s %2s %s %s %s \n",x,prod[x],prodsle[9],$1,backupsle[8],backupsle[9]
}

END {
    print "Done"
}

 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. Shell Programming and Scripting

AWK help, matching 2 files into one

I'm newbie with AWK. What I'm trying to do is matching file1 and file2 into a file3 with records listed in columns with pipe as delimiter. The thing is the file1 has thousands of records while file2 has very few. But I want the file3 to show all records in file1 and with data from file2 to be... (2 Replies)
Discussion started by: jmeasel7
2 Replies

5. Shell Programming and Scripting

awk multiline matching

I have a file that looks something like this with lots of text before and after. Distance method: Sum of squared size difference (RST) </data> <pairwiseDifferenceMatrix time="02/08/11 at 13:08:27"> 1 2 1 448.82151 507.94231 2 ... (7 Replies)
Discussion started by: mgray
7 Replies

6. Shell Programming and Scripting

String matching using awk

Hello, I am working with google ngram data set which is of size 100s of gb. Before using it with Java, I wanted to filter it out using shell script. Here is a sample line in the file: 2.55 1.57 1992 10 20 30 The first two fields (2.55 and 1.57) are... (3 Replies)
Discussion started by: shekhar2010us
3 Replies

7. Shell Programming and Scripting

Matching two files with awk

Hello, I have two files as follow: AFFY_ID RS_ID CHROMOSOME POS_START POS_END ALLELE1 ALLELE2 SNP_A-1780283 rs17011450 chr4 127630275 127630276 C T SNP_A-1780285 rs6919430 chr6 90919464 90919465 A C SNP_A-1780286 --- chr7 104281409 104281410 A G SNP_A-1780301 rs2342723 chr16 5748790... (1 Reply)
Discussion started by: Homa
1 Replies

8. Shell Programming and Scripting

Insert lines above matching line with content from matching

Hi, I have text file: Name: xyz Gender: M Address: "120_B_C; ksilskdj; lsudlfw" Zip: 20392 Name: KLM Gender: F Address: "65_D_F; wnmlsi;lsuod;,...." Zip:90233I want to insert 2 new lines before the 'Address: ' line deriving value from this Address line value The Address value in quotes... (1 Reply)
Discussion started by: ysrini
1 Replies

9. Shell Programming and Scripting

Compare file1 for matching line in file2 and print the difference in matching lines

Hello, I have two files file 1 and file 2 each having result of a query on certain database tables and need to compare for Col1 in file1 with Col3 in file2, compare Col2 with Col4 and output the value of Col1 from File1 which is a) not present in Col3 of File2 b) value of Col2 is different from... (2 Replies)
Discussion started by: RasB15
2 Replies

10. Shell Programming and Scripting

awk to combine all matching dates and remove non-matching

Using the awk below I am able to combine all the matching dates in $1, but I can not seem to remove the non-matching from the file. Thank you :). file 20161109104500.0+0000,x,5631 20161109104500.0+0000,y,2 20161109104500.0+0000,z,2 20161109104500.0+0000,a,4117... (3 Replies)
Discussion started by: cmccabe
3 Replies
Mojo::Home(3pm) 					User Contributed Perl Documentation					   Mojo::Home(3pm)

NAME
Mojo::Home - Detect and access the project root directory in Mojo SYNOPSIS
use Mojo::Home; my $home = Mojo::Home->new; $home->detect; DESCRIPTION
Mojo::Home is a container for home directories. ATTRIBUTES
Mojo::Home implements the following attributes. "app_class" my $class = $home->app_class; $home = $home->app_class('Foo::Bar'); Application class. METHODS
Mojo::Home inherits all methods from Mojo::Base and implements the following new ones. "new" my $home = Mojo::Home->new; my $home = Mojo::Home->new('/home/sri/myapp'); Construct a new Mojo::Home object. "detect" $home = $home->detect; $home = $home->detect('My::App'); Detect home directory from the value of the "MOJO_HOME" environment variable or application class. "lib_dir" my $path = $home->lib_dir; Path to "lib" directory of application. "list_files" my $files = $home->list_files; my $files = $home->list_files('foo/bar'); Portably list all files recursively in directory relative to the home diectory. $home->rel_file($home->list_files('templates/layouts')->[1]); "mojo_lib_dir" my $path = $home->mojo_lib_dir; Path to "lib" directory in which Mojolicious is installed. "parse" $home = $home->parse('/home/sri/myapp'); Parse home directory. "rel_dir" my $path = $home->rel_dir('foo/bar'); Portably generate an absolute path for a directory relative to the home directory. "rel_file" my $path = $home->rel_file('foo/bar.html'); Portably generate an absolute path for a file relative to the home directory. "slurp_rel_file" my $string = $home->slurp_rel_file('foo/bar.html'); Portably read all data at once from file relative to the home directory. my $content = $home->slurp_rel_file($home->list_files('public')->[1]); "to_string" my $string = $home->to_string; my $string = "$home"; Home directory. SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::Home(3pm)
All times are GMT -4. The time now is 06:59 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy