ann kok wrote: > Hi all > > I don't have idea how to write this script, please > help > > I have thousand records in this format. eg: file No.3 > is > > > File No: 003 > Customer: Ann > Email address: xxx at info > Country: England > Created by: 20071102 > > > file No. 4 is: > > File No: 004 > Customer: James > Email address: xxx at gov > Country: Australia > Created by: 20071105 > > > > > I need to write a script to replace those Fields > eg: (Customer/Email/Country.... when matching the > FileNo.001...002...) to get Data in this file > and also put the date in "Created by: 20071105" > when I run this script > > > > File NO Customer Email Address > Country > -------------------------------------------------------- > 001 John xxx at net USA > 002 Peter xxx at com > Canada > 003 David xxx at org > Mexico > > > I know awk can do it. but don't know how to match the > File No. in original file and the data file > > > Thank you for your help > I would think PERL would be nicely suited for this need. ================================ #!/usr/bin/perl ####################################################### # Incoming file format # --------------------------- # File No: 003 # Customer: Ann # Email address: xxx at info # Country: England # Created by: 20071102 ####################################################### # run this program in the same directory where # files to be read are stored, or set path variable # to path where files are located. ####################################################### # this code assumes that "ALL" files being read are # in exactly the format listed above ####################################################### # # path to files to be read $infiles = "./*"; # default setting assumes this program # is being run from the same directory # where the files being read exist. # # create an array of file names to be read @records = `ls -w 1 $infiles`; # # path to file we're creating to contain information $outfile = "./records_outfile"; # change file name # to what ever you want open (OF, ">$outfile"); # # Output column headers to output file print OF "File No.\t\tCustomer\t\tEmail Address\t\tCountry\t\tCreated By\n"; foreach ( @records ){ chomp $_; open (F, "<$_"); foreach $r (<F>){ chomp $r; ($label,$value) = split(/\:/, $r); $value =~ s/^\s+//g; # trim off any spaces before value if ($string eq "") { # first value added to string $string = $value; }else{ $string .= "\t\t$value"; } } close(F); print OF "$string\n"; } close(OF); exit; ================================ -- Mark "Drunkenness is not an excuse for stupidity. If you're stupid when you're sober then that's one thing, but if you're sober when you're stupid, then you're just plain stupid!" ============================================== Powered by CentOS5 (RHEL5)