08-03-2011
Well, the problem is a classic join. The first two fields combined are a key, and the next two are the validation payload or to be validated payload. You can either put the smaller set in a string addressed array / a hash map for fast lookup, or disassemble, labeling for line #, sort both files' data by key and merge them, doing all of each validation at once. You can resort the errors by line number, and who will know!
We get this question regularly in various forms. It is important to see it as a classic join problem, just as in an RDBMS. In fact, loading/applying it all to a DRBMS tool means you can solve most of it in SQL.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
In perl I want to do remove the top line of my input file then process the next line. I want to do something like
head -1 inputfile > temp
grep -v temp inputfile > newinputfile
cp newinputfile inputfle
is this possible in perl? (3 Replies)
Discussion started by: reggiej
3 Replies
2. Shell Programming and Scripting
hi
i want check for PVCS header in file if its present then check if its in proper format or not i want to do this is in perl on windows.
this is what i am doing :
1 . open file
2 . check for "PVCS information" if found then store the line no to $line var.
3 . check for "sccs" header ... (0 Replies)
Discussion started by: zedex
0 Replies
3. UNIX for Advanced & Expert Users
Write a quick shell snippet to find all of the IPV4 IP addresses
in any and all of the files under /var/lib/output/*, ignoring
whatever else may be in those files. Perform a reverse lookup on
each, and format the output neatly, like "IP=192.168.0.1,
... (0 Replies)
Discussion started by: choco4202002
0 Replies
4. Shell Programming and Scripting
I am reading a file using While loop
while <FILE>
{
$_ = <FILE>;
process data...
}
I would like to quit reading the file once I encounter a String pattern. How do i do it.
is it
if (/SUMMARY/)
{
last;
}
I am having problems with uninitialized value in pattern... (1 Reply)
Discussion started by: subhap
1 Replies
5. Shell Programming and Scripting
Can anyone please correct the code. I am trying to copy the user input to an output file log.txt:
the script works fine but when I am trying to copy the user input error is generated.
Thanks in advance.
#!/usr/bin/perl
$temp = "/home/log.txt";
$reply = "";
print 'Enter the code:... (1 Reply)
Discussion started by: sureshcisco
1 Replies
6. Shell Programming and Scripting
HI all,
I want to script where all the server names will be in a text file like
server1
server2
server3 . and the script should take servernames from a text file and perform copy of files if the files are not present on those servers.after which it should take next servername till the end of... (0 Replies)
Discussion started by: joseph.dmello
0 Replies
7. Shell Programming and Scripting
Hi, I want to list all file that match user input ( specified shell wildcard) but when I compile it dont list me
#!/usr/bin/perl -w
print "Enter Advance Search Function: ";
chomp ($func = <STDIN>);
my @files = glob("$func");
foreach my $file (@files)
{
print "$file\n";... (1 Reply)
Discussion started by: guidely
1 Replies
8. UNIX for Dummies Questions & Answers
I have the below 2 files:
1) Third field from file1.txt should be compared to the first field of lookup.txt.
2) If match found then third field, file1.txt should be substituted with the second field from lookup.txt.
3)Else just print the line from file1.txt.
File1.txt:... (4 Replies)
Discussion started by: venalla_shine
4 Replies
9. Shell Programming and Scripting
I have been struggling to grep a file of NGrams (basically clusters of consonants or Consonant and Vowel) acting as a pattern file from an Input file which contains a long list of words, one word per line. The script would do two things:
Firstly read a text pattern from a large file of such... (5 Replies)
Discussion started by: gimley
5 Replies
10. Shell Programming and Scripting
Hi ,
I need an help in perl scripting.
I have an perl script written and i have an for loop in that ,where as it writes some data to a file and it has details like below.
cat out.txt
This is the first line
this is the second line.
.....Now, this file needs to be send in mail in HTML... (2 Replies)
Discussion started by: scott_cog
2 Replies
JOIN(1) General Commands Manual JOIN(1)
NAME
join - relational database operator
SYNOPSIS
join [ options ] file1 file2
DESCRIPTION
Join forms, on the standard output, a join of the two relations specified by the lines of file1 and file2. If one of the file names is the
standard input is used.
File1 and file2 must be sorted in increasing ASCII collating sequence on the fields on which they are to be joined, normally the first in
each line.
There is one line in the output for each pair of lines in file1 and file2 that have identical join fields. The output line normally con-
sists of the common field, then the rest of the line from file1, then the rest of the line from file2.
Input fields are normally separated spaces or tabs; output fields by space. In this case, multiple separators count as one, and leading
separators are discarded.
The following options are recognized, with POSIX syntax.
-a n In addition to the normal output, produce a line for each unpairable line in file n, where n is 1 or 2.
-v n Like -a, omitting output for paired lines.
-e s Replace empty output fields by string s.
-1 m
-2 m Join on the mth field of file1 or file2.
-jn m Archaic equivalent for -n m.
-ofields
Each output line comprises the designated fields. The comma-separated field designators are either 0, meaning the join field, or
have the form n.m, where n is a file number and m is a field number. Archaic usage allows separate arguments for field designators.
-tc Use character c as the only separator (tab character) on input and output. Every appearance of c in a line is significant.
EXAMPLES
sort /adm/users | join -t: -a 1 -e "" - bdays
Add birthdays to password information, leaving unknown birthdays empty. The layout of is given in users(6); bdays contains sorted
lines like
tr : ' ' </adm/users | sort -k 3 3 >temp
join -1 3 -2 3 -o 1.1,2.1 temp temp | awk '$1 < $2'
Print all pairs of users with identical userids.
SOURCE
/sys/src/cmd/join.c
SEE ALSO
sort(1), comm(1), awk(1)
BUGS
With default field separation, the collating sequence is that of sort -b -ky,y; with -t, the sequence is that of sort -tx -ky,y.
One of the files must be randomly accessible.
JOIN(1)