08-25-2006
47,
0
Join Date: Apr 2006
Last Activity: 29 February 2012, 11:44 AM EST
Posts: 47
Thanks Given: 0
Thanked 0 Times in 0 Posts
gnuplotting in a shell
Hi,
I am trying to automate the gnuplotting of more than 500 data files. For this, I have written a script which is working fine but for one issue...
The problem is that I have to plot the whole data and then plot the row starting with 60001 because I use a different symbol for it. Therefore I look in my data files for a particular row starting with 60001. As you can see below in my script, I do this with gawk. My data files look like
-----------------------------------------
##comment
##comment
45601 value1 value2 etc ...
34210 value1 value2 etc ...
21345 value1 value2 etc ...
.
.
60001 value1 value2 etc ...
34213 value1 value2 etc ...
--------------------------------------------
The row starting with 60001 changes its position in the different data files, so that I have to gawk it out.
The script is:
-----------------------------------------------------
#!/usr/bin/env zsh
for f in *.asc.gz ; do
eps_file=`basename $f .asc.gz`.eps
gnuplot <<EOF
unset key
set xrange [-15:15]
set yrange [-15:15]
set xlabel "X (pc)" font "Helvetica,12"
set ylabel "Y (pc)" font "Helvetica,12"
set terminal postscript eps enhanced ; set output "$eps_file"
set pointsize 1
plot "< zcat $f" using 3:4 with dots lt 8;
set pointsize 2;
replot "< zcat $f | gawk -v NAME=60001 '/AS/ {TIME=$4} $1==NAME {print TIME,$2,$3,$4,$5,$6,$7,$8,$11; exit}'" using 3:4 with points pt 6 lt -1 ;
unset output
EOF
done
---------------------------------------------------
(I print more columns that I need but this is not the problem)
When I give gnuplot the commands for a single data file I get what I want; when I execute the script in the directory with 500 files, I get
--------------------------------------
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
gawk: /AS/ {TIME=} ==NAME {print TIME,,,,; exit}
gawk: ^ syntax error
zcat: stdout: Broken pipe
gnuplot> plot "< zcat Splotch4_0010_part.asc.gz" using 3:4 with dots lt 8, "< zcat Splotch4_0010_part.asc.gz | gawk -v NAME=60001 '/AS/ {TIME=} ==NAME {print TIME,,,,; exit}'" using 3:4 with points pt 6 lt -1 ;
^
line 0: no data point found in specified file
------------------------------------------
and so on and so forth...
Can anybody help me?
Thanks in any case