From: Madhur on 18 Jan 2008 04:22 I would like to know the best way of generating filter of two files based upon the following condition I have two files. Contents of the first file is File 1 abc def hij asd sss lmn hig pqr mno File 2 jih def asd poi iuu wer wer pqr jjj I would like have the output as Output File1 asd sss lmn File2 poi iuu wer Basically I want to compare the two files based on second column. If the second column matches on both the files do not print anything, else if there is no matc h in for the second column for first file in second file then print it under Fil e1 header, else if there is no match for the second column for second file in fi rst file print it under File2 header. Thankyou Madhur
From: pk on 18 Jan 2008 07:16 Madhur wrote: > I would like to know the best way of generating filter of two files > based upon the following condition > > I have two files. Contents of the first file is > > File 1 > abc def hij > asd sss lmn > hig pqr mno > > > File 2 > > jih def asd > poi iuu wer > wer pqr jjj > > I would like have the output as > Output > > File1 > asd sss lmn > File2 > poi iuu wer > > Basically I want to compare the two files based on second column. If > the second column matches on both the files do not print anything, else if > there is no match in for the second column for first file in second file > then print it under File1 header, else if there is no match for the second > column for second file in first file print it under File2 header. A possible solution: paste f1 f2 | awk '$2 != $5 {print $1,$2,$3>"file1";print $4,$5,$6>"file2"}'
From: Icarus Sparry on 18 Jan 2008 07:09 On Fri, 18 Jan 2008 01:22:10 -0800, Madhur wrote: > I would like to know the best way of generating filter of two files > based upon the following condition > > I have two files. Contents of the first file is > > File 1 > abc def hij > asd sss lmn > hig pqr mno > > > File 2 > > jih def asd > poi iuu wer > wer pqr jjj > > I would like have the output as > Output > > File1 > asd sss lmn > File2 > poi iuu wer > > Basically I want to compare the two files based on second column. If the > second > column matches on both the files do not print anything, else if there is > no matc > h in for the second column for first file in second file then print it > under Fil > e1 header, else if there is no match for the second column for second > file in fi > rst file print it under File2 header. > > Thankyou > Madhur From your examples it is clear that the second column is not currently sorted. Does the order of the lines in the output matter? Are we supposed to be comparing on a line by line basis or can "def" be in the second field on line 1 in one file and line 17 in the other? If it is not on a line by line basis, is the second column unique (within a file), or can you have repeated values? If you can have repeated values, does a single line in the other file match them all, and hence produce no output? How big are the files compared to the memory of the machine - i.e. can we read the files into memory and operate there or do we have to process them as a stream? Maybe #!/bin/sh echo "$1" awk 'NR==FNR {a[$2]=1} NR!=FNR && !a[$2]' "$1" "$2" echo "$2" awk 'NR==FNR {a[$2]=1} NR!=FNR && !a[$2]' "$2" "$1" is what you are looking for?
From: Ed Morton on 18 Jan 2008 09:42 On 1/18/2008 3:22 AM, Madhur wrote: > I would like to know the best way of generating filter of two files > based upon the following condition > > I have two files. Contents of the first file is > > File 1 > abc def hij > asd sss lmn > hig pqr mno > > > File 2 > > jih def asd > poi iuu wer > wer pqr jjj > > I would like have the output as > Output > > File1 > asd sss lmn > File2 > poi iuu wer > > Basically I want to compare the two files based on second column. If > the second > column matches on both the files do not print anything, else if there > is no matc > h in for the second column for first file in second file then print it > under Fil > e1 header, else if there is no match for the second column for second > file in fi > rst file print it under File2 header. > > Thankyou > Madhur Already answered in comp.lang.awk. Please don't multi-post. Ed
|
Pages: 1 Prev: creating arrays from text files Next: modifying: eval 'find . -maxdepth 1' |