Re: SPAWN with AWK [message #83562 is a reply to message #83561] |
Sat, 09 March 2013 02:28  |
Mats Löfdahl
Messages: 263 Registered: January 2012
|
Senior Member |
|
|
Den lördagen den 9:e mars 2013 kl. 10:38:58 UTC+1 skrev Hannah:
> Hi there,
>
> I have to read in a lot of data files in my IDL script and thought about using SPAWN with AWK for this. So far, I did it with READCOL and WHERE functions but I find it kind of convenient to do it with just one line in AWK (but I have no idea of the efficiencies, if someone could say anything to this..).
>
> No I have some problems with my command, as there are to many ". The line looks like this:
>
> spawn, "awk '{if (min=="") {min=max=$17}; if ($17>max) {(max=$17) && (maxid=$1)}; if (($17<min) && ($17!=0.)) {(min=$17) && (minid=$1)}} END {print min, minid, max, maxid}' dat file" val_vec
>
> Not surprisingly, I get an "unterminated string" error bec of the "s at (min==""). So my question is, if anyone has an idea to fix this either in the awk command or anyhow in IDL.
You could try building the string by concatenating substrings using, like this:
IDL> print,"awk '" + '{if (min==""){min=max=$17}; if ($17>max) {(max=$17) && (maxid=$1)}; if (($17<min) && ($17!=0.)) {(min=$17) && (minid=$1)}} END {print min, minid, max,maxid}' + "'" + ' dat file" val_vec'
awk '{if (min==""){min=max=$17}; if ($17>max) {(max=$17) && (maxid=$1)}; if (($17<min) && ($17!=0.)) {(min=$17) && (minid=$1)}} END {print min, minid, max,maxid}' dat file" val_vec
|
|
|