awk using 2 input files instead of while loops


 
Thread Tools Search this Thread
Special Forums UNIX Desktop Questions & Answers awk using 2 input files instead of while loops
# 1  
Old 02-09-2012
awk using 2 input files instead of while loops

Hi Friends,

I have two files as input with data that looks like this:
file1.txt
Code:
1
2
3
4

file2.txt
Code:
a,aa
b,bb
c,cc
d,dd
e,ee
f,ff

instead of me doing 2 while loops to get the combinations
Code:
   while read line_file1
   do
         while read line_file2
         do
                1stpos="$(echo $line_file2 | cut -d "," -f1)"
                2ndpos="$(echo $line_file2 | cut -d "," -f2)"            
            
                printf "%-20s%-20s%-20s" ${1stpos} ${2ndpos} $(line_file1) >> output.txt
         done < file2.txt
   done < file1.txt

The output should look like this:
Code:
a           aa          1   
b           bb          1
c           cc          1
d          dd          1
e          ee           1
f           ff            1
a          aa           2
b          bb          2
c          cc           2
d          dd          2
...

<-- assuming that the output file is in a fixed length format since columns are not aligned Smilie

can this be done using awk? or sed? to speed up the process of looping; because in reality, data is could be very enormous and could lead to performance issues. please help.... thanks!

PS.

Is there also a way to improve this?

Code:
while read line_file2
do
  1stpos="$(echo $line_file2 | cut -d "," -f1)"
  2ndpos="$(echo $line_file2 | cut -d "," -f2)"            
  printf "%-20s%-20s%-20s" ${1stpos} ${2ndpos} $(line_file1) >> output.txt  done < file2.txt

can we turn the red lines into an awk to get rid of the slow echo?
Thanks!

Last edited by kokoro; 02-09-2012 at 01:35 PM.. Reason: edited code
# 2  
Old 02-09-2012
Can you post desired output for those two input files?
# 3  
Old 02-10-2012
I hope this will anwer your query

Code:
 awk  'NR==FNR{a[$1]=$1;next} {for(v in a){ print v","$0 | "sort -n -k1"   }}' file1 file2

This User Gave Thanks to tarun_agrawal For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

2 Loops gathering input

Greetings all, I have came up with some code, to read an input file and generate a list, here is a sample of what I am working with. The variable $USER will be inputted by the person running the utility. do folder=${line%} echo "$folder $USER done < list.txt sample of list.txt- ... (15 Replies)
Discussion started by: jeffs42885
15 Replies

2. Shell Programming and Scripting

Parse input of two files to be the same in awk

I have two files that I am going to use diff to find the differences but need to parse them before I do that. I have include the format of each file1 and file2 with the desired output of each (the first 5 fields in each file). The first file has a "chr" before the # that needs to be removed. I... (1 Reply)
Discussion started by: cmccabe
1 Replies

3. UNIX for Dummies Questions & Answers

Dealing with Empty files, AWK and Loops

I write this bit of code to calculate the mean and variance for all the files in one directory and print the mean and variance in a separate folder but with the same file name. FILES="data/*" for X in $FILES do name=$(basename $X) awk '{x=$0; s+=$0; n++} END{mean=s/n; for (i in x){ss... (20 Replies)
Discussion started by: A-V
20 Replies

4. Shell Programming and Scripting

Help with reading two input files in awk

Hello, I'm trying to write an awk program that reads two files inputs. example, file 1: 0.00017835 0.000176738 0.00018811 0.000189504 0.000188155 0.000180065 0.000178991 0.000178252 0.000182513 file 2: 1.7871769E-05 1.5139576E-16 1.5140196E-16 1.5139874E-16 1.7827407E-04 ... (5 Replies)
Discussion started by: joseamck
5 Replies

5. Shell Programming and Scripting

AWK using two input files

Hi , i have two input files one is input.gz and another is ( input.txt) text file.in gz format input file each record contains 10 fields and corresponding header value is present in the text file as a single record i.e text file contains only 10 records which is header value,so output of the awk... (1 Reply)
Discussion started by: Ajoy
1 Replies

6. Shell Programming and Scripting

Comparing 2 input files -Awk

Compare 2 files and print the values input1 (c1 20 100 X_y10) along with one closest highest (c1 100 200 X_y10) and one lowest values (c1 10 15 X_y10) from input2 input1 c1 20 100 X_y10 input2 c1 5 10 X_y10 c1 10 15 X_y10 c1 100 200 X_y10 c1 200 300 X_y10 output ... (8 Replies)
Discussion started by: bumblebee_2010
8 Replies

7. Shell Programming and Scripting

awk read input files

hi, i'm a beginner in writing awk scripts and I have a problem with reading input files. Requirement for my programm: compare file1 to file2 and check if value in column1 is equal and value in column5 is different. File 1: 180 P 01.01.2008 30.06.2008 2 180 P 01.07.2008 ... (10 Replies)
Discussion started by: tgooper
10 Replies

8. Shell Programming and Scripting

Splitting input files into multiple files through AWK command

Hi, I needs to split *.txt files from single directory depends on the some mutltiple input values. i have wrote the code like below for file in *.txt do grep -i -h "value1|value2" $file > $file; done. My requirment is more input values needs to be given in grep; let us say 50... (3 Replies)
Discussion started by: arund_01
3 Replies

9. Shell Programming and Scripting

awk reading 2 input files but not getting expected value

I'm reading 2 input files but not getting expected value. I should get an alpha value on file_1_data but not getting any. Please help. >cat test6.sh awk ' FILENAME==ARGV { file_1_data=$0; print "----- 1 Line " NR " -----" $1; next } FILENAME==ARGV { file_2_data=$0; print "----- 2... (1 Reply)
Discussion started by: pdtak
1 Replies

10. Shell Programming and Scripting

2 input files for awk

Hi, i have 2 files like f1 and f2 f1: 1 Note: some times it will be cahnged to 2 and 3. f2: 1:20 2:30 4:50 6:70 8:90 3:20 1:30 1:40 output: 1:80 (sum of 1) (6 Replies)
Discussion started by: koti_rama
6 Replies
Login or Register to Ask a Question