I have two big files of 400,000 lines. I want to compare the column 1 of the second file with column 1 of first file recursively. If they match I would like to print the whole line. It is a sorted file.
file 1: name values aaa 10 aab acc aac 30 aac abc file2: aaa aac aac aad
since the file contains 400,000 lines it takes time to process.
My current solution is like this
#!/bin/ksh while read line do var=`echo $line ` grep "$var" file1 >> /dev/null if [ $? -eq 0 ] then grep "$var" file1 >> present else echo " $line missing " > missing fi done < "file2"
Since I am using
grep here, the value may be present some where in the file1 other than the intended column1, I don't want that to happen.
My expected solution:
- compare the second file only with the column 1 of first file (even if we do this way it takes long time).
- Using a
perlscript with file pointer compare two columns of the files. If the string matches print it. Else if the column 1 of first file is greater than that of second file increment the file 2 AND COMPARE. If it is VICE VERSA increment the column 1 of file 1 and compare.