Awk command help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk command help
# 8  
Old 03-08-2012
One way using perl:
Code:
$ cat file1
 xyz033E
 xyz033F
 xyz033G
 xyz177E
 xyz177F
 xyz177G
 xyz181A
 xyz181B
 xyz181C
 xyz181E
 xyz181F
 xyz181G
$ cat file2
Iub_xyz032
Iub_xyz033
Iub_xyz069
Iub_xyz070
Iub_xyz071
Iub_xyz074
Iub_xyz077
Iub_xyz088
Iub_xyz113
Iub_xyz114_PAT
Iub_xyz177_2nd_INT
Iub_xyz178
Iub_xyz179
Iub_xyz180
Iub_xyz181_INT
Iub_xyz189
Iub_xyz191
Iub_xyz197_2nd
Iub_xyz198_2nd_INT
Iub_xyz199
Iub_xyz589
Iub_xyz654
Iub_xyz681_2nd_PAT
Iub_xyz817
Iub_xyz818
Iub_xyz861
Iub_xyz952
Iub_xyz984
Iub_xyz988
$ cat script.pl
use warnings;
use strict;

die qq[Usage: perl $0 <file1> <file2>\n] unless @ARGV == 2;

open my $fh1, qq[<], shift @ARGV or die;
open my $fh2, qq[<], shift @ARGV or die;

my (%file2_data, $re);

while ( <$fh2> ) {
        chomp;
        my $str = $_;
        s/\A[^_]*_//;
        s/_.*\Z//;
        $file2_data{ $_ } = $str;
}

{
        my $file2_regex = join qq[|], keys %file2_data;
        $re = qr/$file2_regex/;
}

while ( <$fh1> ) {
        chomp;
        if ( m/($re)/o ) {
                printf qq[%s\t%s\n], $_, $file2_data{ $1 };
        }
}
$ perl script.pl file1 file2
 xyz033E        Iub_xyz033
 xyz033F        Iub_xyz033
 xyz033G        Iub_xyz033
 xyz177E        Iub_xyz177_2nd_INT
 xyz177F        Iub_xyz177_2nd_INT
 xyz177G        Iub_xyz177_2nd_INT
 xyz181A        Iub_xyz181_INT
 xyz181B        Iub_xyz181_INT
 xyz181C        Iub_xyz181_INT
 xyz181E        Iub_xyz181_INT
 xyz181F        Iub_xyz181_INT
 xyz181G        Iub_xyz181_INT


Last edited by birei; 03-08-2012 at 12:37 PM..
# 9  
Old 03-08-2012
Thanks bala

can you please explain me the result of output after each line Smilie

---------- Post updated at 11:52 AM ---------- Previous update was at 11:34 AM ----------

Hi Beri

Thanks a lost it worked perfectly Smilie

but their is one drawback that if files not sorted it will miss them, is their a way so that a record in file1 will check all lines in file2 for a match ?

Thanks again.
# 10  
Old 03-08-2012
What do you mean with not sorted? Can you provide an example or give more detail?
# 11  
Old 03-08-2012
Quote:
Originally Posted by balajesuri
Code:
#! /bin/bash
while read x
do
    y=${x%?} # Remove last character from each line of file2 which is contained in $x
    grep -q "$y" file2 # Search for $y in file2 but don't print the output
    [ $? -eq 0 ] && echo -e "$x\t$(grep $y file2)" # If $y found in file2 then print $x followed by line in file2 containing $y
done < file1

Quote:
Originally Posted by Wissam
Thanks bala

can you please explain me the result of output after each line
# 12  
Old 03-08-2012
hi bala

but how the files will be run

for example if i put the code in a file called command in same directory where file1 and file2 are located.

can i do the following only ?

bash command
# 13  
Old 03-08-2012
Anything you can type into the shell, you can also put into a file and run with bash filename. There's no mysterious difference between the two.

Well, except aliases and history commands, but none of them are being used here.
# 14  
Old 03-08-2012
hi corona

can you please explain it more

for example i put the code inside a file names command

so the only think i need to do in terminal is

bash command

is this right ?
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pass awk field to a command line executed within awk

Hi, I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date). All my attempts failed this far. Here's an example. It works fine with timestamp hard-codded into the command echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Discussion started by: tuxer
4 Replies

2. Shell Programming and Scripting

Multiple command execution inside awk command during xml parsing

below is the output xml string from some other command and i will be parsing it using awk cat /tmp/alerts.xml <Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Discussion started by: vivek d r
2 Replies

3. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

4. Shell Programming and Scripting

awk command in script gives error while same awk command at prompt runs fine: Why?

Hello all, Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val: > cat getnon0file.sh #!/bin/bash this="getnon0file.sh" USAGE=$this" InFile="xyz.38" Min="0.05" # awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
Discussion started by: catalys
4 Replies

5. Shell Programming and Scripting

awk command for simple join command but based on 2 columns

input1 a_a a/a 10 100 a1 a_a 20 200 b1 b_b 30 300 input2 a_a a/a xxx yyy a1 a1 lll ppp b1 b_b kkk ooo output a_a a/a 10 100 xxx yyy (2 Replies)
Discussion started by: ruby_sgp
2 Replies

6. UNIX for Dummies Questions & Answers

Basic awk question...getting awk to act on $1 of the command itself

I have a script problem that I am not able to solve due my very limited understanding of unix/awk. This is the contents of test.sh awk '{print $1}' From the prompt if I enter: ./test.sh Hello World I would expect to see "Hello" but all I get is a blank line. Only then if I enter "Hello... (2 Replies)
Discussion started by: JasonHamm
2 Replies

7. Shell Programming and Scripting

awk/sed Command : Parse parameter file / send the lines to the ksh export command

Sorry for the duplicate thread this one is similar to the one in https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121 Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Discussion started by: rajan_san
4 Replies

8. Shell Programming and Scripting

assign a command line argument and a unix command to awk variables

Hi , I have a piece of code ...wherein I need to assign the following ... 1) A command line argument to a variable e.g origCount=ARGV 2) A unix command to a variable e.g result=`wc -l testFile.txt` in my awk shell script When I do this : print "origCount" origCount --> I get the... (0 Replies)
Discussion started by: sweta_doshi
0 Replies
Login or Register to Ask a Question