KSH: Compare variable to $1 in an input file


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting KSH: Compare variable to $1 in an input file
# 1  
KSH: Compare variable to $1 in an input file

Hello,

I am working with KSH on AIX and I have 2 files generated from different sources... as seen below:

Code:
FILE1 FILE2
AAA AAA@ABS0001C
BBB BBB@ABS0003D
CCC CCC@ABS0023A
DDD DDD@ABC0145D
EEE EEE@ABS0090A
FFF FFF@ABS0002A
GGG GGG@ABC0150D
HHH

[note FILE1 is noted above by the 3 characters, FILE2 is everything after the space]

FILE1 is main main data source, created daily and changes quite frequently. FILE2 is static and requires manual update. Each record in FILE1 will match the characters before the @ symbol in FILE2. However, at times, FILE1 may have more records than FILE2 and there will be no match. Rarely, FILE1 will contain less records than FILE2

I need a way to take the value of each line in FILE1 and search for it in FILE2... if found, then I need to print the record from FILE1 with the text after the @ symbol in FILE2. If no match found, I need to print "NULL"

Example output:
Code:
AAA ABS0001C
BBB ABS0003D
CCC ABS0023A
DDD ABC0145D
EEE ABS0090A
FFF ABS0002A
GGG ABC0150D
HHH NULL

I'm able to put the static file within my script in the form of a giant case statement, but that is really not a feasible approach as there are 200+ records in the file. I also think I could do this with a few nasty loops, but I'm really looking for an efficient practical approach. Thanks for any help you can give...

Last edited by Scott; 05-19-2010 at 05:35 PM.. Reason: Code tags please...
# 2  
Code:
nawk -F'@' 'FNR==NR{f2[$1]=$2;next} {print $1, (($1 in f2)?f2[$1]:"NULL")}' file2 file1

This User Gave Thanks to vgersh99 For This Post:
# 3  
Bug perhaps...

Code:
grep -f file1 <file2 | tr "@" " "

the above works up to the printing of NULL... gonna have to think about that.

Last edited by joeyg; 05-19-2010 at 05:45 PM.. Reason: missed part of your requirement
# 4  
The following may help you solve your problem:
Code:
join -t@ -a1 -eNULL -o 0,2.2 f1 f2 | tr @ ' '

Note: join requires pre-sorted files (such as your sample data).

Sample run:
Code:
$ cat f1
AAA
BBB
CCC
DDD
EEE
FFF
GGG
HHH
$ cat f2
AAA@ABS0001C
BBB@ABS0003D
CCC@ABS0023A
DDD@ABC0145D
EEE@ABS0090A
FFF@ABS0002A
GGG@ABC0150D
$ join -t@ -a1 -eNULL -o 0,2.2 f1 f2 | tr @ ' '
AAA ABS0001C
BBB ABS0003D
CCC ABS0023A
DDD ABC0145D
EEE ABS0090A
FFF ABS0002A
GGG ABC0150D
HHH NULL

Regards,
Alister

Last edited by alister; 05-19-2010 at 05:56 PM..
# 5  
I just tested the 'nawk' statement and it worked perfectly... thank you so much for the responses!

Cheers
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #521
Difficulty: Medium
0b110010000001 = 2^11 + 2^10 + 2^7 + 2^0
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh scripting SSH to Compare File Sizes

Hello, I currently have very little experience with Shell scripting and trying to create a script for the purpose of collecting the size of a couple sizes on 4 different Hosts. The Idea is to collected the information from the files in which the script is kicked off on, store the values into... (17 Replies)
Discussion started by: Abstract3000
17 Replies

2. Shell Programming and Scripting

Ksh: how compare content of a file with an other array

Hi, I created a skript in ksh which generate a file with semicolon as separator, this is an example of the file a created: example content file: hello;AAAA;2014-08-17 hello;BBBB;2014-08-17 hello;CCCC;2014-08-17 I would need to compare the content in of the second column of this file... (3 Replies)
Discussion started by: jmartin
3 Replies

3. Shell Programming and Scripting

XML variable for input in same input file

Dear All , i stuck in one problem executing xml .. i have input xml as <COMMAND name="ARRANGEMENT.WRITE" timestamp="0" so="initial"> <SVLOBJECT> <LONG name="CSP_PMNT_ID" val="-1"/> <MONEY name="CSP_CEILING" amount="0.0" currency="AUD"/> ... (6 Replies)
Discussion started by: arvindng
6 Replies

4. Shell Programming and Scripting

ksh using input file with output going to same file name and location

I've been asked if I can write a "quick" little ksh script that will do the following: java java_class_file /dir/input_file.xml /dir/output_file.xml I'm a complete newbie with ksh so any help would be appreciated. This is on AIX and java is found in /usr/java5/jre/bin/java (4 Replies)
Discussion started by: newbie_ksh
4 Replies

5. Shell Programming and Scripting

[KSH] Creating automatic variable from read input

Hello there, I am posting to seek help with a KSH script, I am making a simple calculation program where the user can enter as many numbers as they like, I am getting their input using the read command, however I am not sure how to repeat doing this and storing the input in to new variables... (7 Replies)
Discussion started by: pandapowerbox
7 Replies

6. Shell Programming and Scripting

KSH - Text from input file truncated while converting it to excel

Dear Members, I am using the attached script to convert a input file delimited by '|' to excel. However, while processing the attribute change_reason, the whole content of the text under change_reason is not displayed completely in the cell in excel. It is truncated after only first few words.... (1 Reply)
Discussion started by: Yoodit
1 Replies

7. Shell Programming and Scripting

KSH - How to use a file as input to an IF or AWK statement

Hi, I have a ksh script where I have an awk statement to exclude a few items... but my "few items" has now grown substantially and I'm looking for a nice compact way of doing this. Maybe putting the exceptions into a file or something? Any suggestions greatly appreciated. # Excluded items... (1 Reply)
Discussion started by: right_coaster
1 Replies

8. Shell Programming and Scripting

Unzip the input file using shell script (ksh)

Hi, I need help in unziping input file through shell script. I had written script, which checks for input file extention. If Extension is "zip" or "gz", then I want to do unzip/uncompress that file. Caould you please let me know that, How to unzip a file through shell script (ksh). Thanks... (16 Replies)
Discussion started by: Poonamol
16 Replies

9. Shell Programming and Scripting

KSH to group records in a file and compare it with another file

Hi, I've a file like below: DeptFile.csv DeptID EmpID ------- ------ Dep01 Emp01 Dep01 Emp02 Dep01 Emp03 Dep02 Emp04 Dep02 Emp05 I've another file which has EmpFile.csv EmpID Salary ------ ------ (3 Replies)
Discussion started by: Matrix2682
3 Replies

10. Shell Programming and Scripting

Help reading an input file in KSH

First I' d like to say you guys are awesome. :) I have a word document that I cut and paste into Textpad and it removed all the fancy formatting which is fine with me. I WinScp'd it to the box and and called it inputfile.txt. Opened it in vi and don't see any special characters or stuff that... (2 Replies)
Discussion started by: zilla30066
2 Replies

Featured Tech Videos