[GRASS-user] combine & edit multiple text files

Slover, Kevin kslover at Dewberry.com
Tue Aug 8 08:32:15 EDT 2006


Maning,
  As David says, python or perl are used now for manipulating text
files.  I have done several quick scripts for doing this with Perl
(thanks David for the python script, bout time I learn to use it).  A
basic perl script would look like this (and note, my Perl is not great,
and am sure there are many other ways to do this) :

Explanation:  Files.txt is a ls/dir listing of the wanted files to
combine.  Then, the script reads in each file, stripping any sort of
header information from the columns, and outputting everything into one
file.  Fairly simple, and a quick search on the web for file
manipulation using Perl will come up with probably a better explanation.

$in_file = "Files.txt";
$out_file = "outfile.txt";

open (INFILE, $in_file) || die "INFILE";
open (OUTFILE, ">$out_file") || die "OUTFILE";

@infiles = <INFILE>;
close(INFILE);

print OUTFILE "z,x,y\n";

foreach $in_files (@infiles)
{

	open (INFILE1, $in_files) || die "Cannot open $in_files";
	while (<INFILE1>)
	{

		chomp($_);
		($x, $y, $z) = split ',',$_;

		if ($x != x) {
		print OUTFILE "$z,$x,$y\n"; }
	}
	
	close(INFILE1);
}

close(OUTFILE);


Kevin Slover
Coastal / GIS Specialist
2872 Woodcock Blvd Suite 230
Atlanta GA 30341
(P) 678-530-0022
(F) 678-530-0044

-----Original Message-----
From: grassuser-bounces at grass.itc.it
[mailto:grassuser-bounces at grass.itc.it] On Behalf Of maning sambale
Sent: Tuesday, August 08, 2006 12:12 AM
To: grassuser at grass.itc.it
Subject: [GRASS-user] combine & edit multiple text files

Hi!

I have a number of ascii files downloaded from ASTR fire project from
the ESA Ionia showing monthly fire incidences from 1996-2006.  I
intend to combine all these files, remove unwanted columns and get the
records from my current region/study area only. All records combined
is 929,155 records!  My guess is I need to use the cat, cut, awk
commands.

Challenge: the files have different record formating

file 1 is like this (take note of the space as the delimiter):

Date   Time 	  Lat       Lon     NDVI  Station
020201 032428.163  -38.379  -66.334 -.-- ESR
020201 032428.163  -38.375  -66.323 -.-- ESR
020201 032428.312  -38.378  -66.359 -.-- ESR
020201 032428.312  -38.374  -66.348 -.-- ESR
020201 032428.312  -38.371  -66.337 -.-- ESR

file 2 looks like this:
    Date  	        Orbit  Time           Lat 	  Lon
    20030101        4384     81704.016    19.364  -155.103
    20030101        4384     81704.164    19.373  -155.105
    20030101        4384     81704.164    19.375  -155.096
    20030101        4385    100833.648    56.638   161.281
    20030101        4386    130756.352   -20.340   134.099

I only need the columns for date, time, lat, lon

Here's what I did:

#combine all file (monthly)
cat 9904ESA01.FIRE 9905ESA01.FIRE 9906ESA01.FIRE 9907ESA01.FIRE
9908ESA01.FIRE ... > test

# cut only desired columns (1_4) delimeiter is spac ' '
cut -d' ' -f1 test > 1
cut -d' ' -f2 test > 2
cut -d' ' -f3 test > 3
cut -d' ' -f4 test > 4

# combine all columns
paste 1 2 3 4 > test5

example output:

021231 223941.761   11.035   -5.016 -.-- ESR
021231 224005.303   12.226   -6.243 -.-- ESR
    20030101        4380     25934.057   -37.022   -69.589
    20030101        4382     45951.090    33.005  -110.772

The problem is for the file example 1, lat and lon columns contain
spaces other than the delimiter example " -38.00" while another is
"120.00"  In the file2 example, more spaces are there.  I think I need
to process different file formats separately but how do I solve the
problem for spaces in the lat/lon columns?

One last question how do I get the records for my current region only?

north:      20:00:01.49976N
south:      5:00:01.499767N
west:       115:00:01.5012E
east:       130:00:01.501193E


I'm starting to understand awk (reading the gawk manual right now) but
may take a while to get do something magical.

Thanks!

Maning

-- 
|---------|----------------------------------------------------------|
| __.-._  |"Ohhh. Great warrior. Wars not make one great." -Yoda     |
| '-._"7' |"Freedom is still the most radical idea of all" -N.Branden|
|  /'.-c  |Linux registered user #402901, http://counter.li.org/     |
|  |  /T  |http://esambale.wikispaces.com|
| _)_/LI
|http://www.geocities.com/esambale/philbiodivmap/philbirds.html   |
|---------|----------------------------------------------------------|

_______________________________________________
grassuser mailing list
grassuser at grass.itc.it
http://grass.itc.it/mailman/listinfo/grassuser





More information about the grass-user mailing list