I am trying to put/add the script to the other script
Well i think i will dump the data to a file and process it with your code
Meanwhile the values ok,
as you flatten the lines before every ";" you get a line like this:
Code:
sed -e '1,/flag_data/d' -e '/glaf_data/,$d' $1\
| tr "\n" " "\
| tr ";" "\n"\
| sed 's/^ *- *// ; /garbage/d'\
gives this:
Code:
A + data data_name_des + data data + data ( 0 200 ) data + data name ( 0 0 ) ( 200 400 )
B + data data_name_des + data data + data ( 1500 400 ) data + data name ( 0 0 ) ( 200 400 )
C + data data_name_des + data data + data ( 700 0 ) data + data name ( 0 0 ) ( 200 400 )
D + data data_name_des + data data + data ( 800 900 ) data + data name ( 0 0 ) ( 200 400 )
Now using upto this line:
Code:
sed -e '1,/flag_data/d' -e '/glaf_data/,$d' $1\
| tr "\n" " "\
| tr ";" "\n"\
| sed 's/^ *- *// ; /garbage/d'\
| awk '{print "pato", $1, $17, $23/1000, $24/1000, $11/1000, 0, $12/1000}'\
| sed '$d'\
you get:
Code:
pato A name 0.2 0.4 0 0 0.2
pato B name 0.2 0.4 1.5 0 0.4
pato C name 0.2 0.4 0.7 0 0
pato D name 0.2 0.4 0.8 0 0.9
Finally the issue, of the position with this code:
Code:
sed -e '1,/flag_data/d' -e '/glaf_data/,$d' $1\
| tr "\n" " "\
| tr ";" "\n"\
| sed 's/^ *- *// ; /garbage/d'\
| awk '{print "pato", $1, $17, $23/1000, $24/1000, $11/1000, 0, $12/1000}'\
| sed '$d'\
|awk '{ if( $6 == 0 && $8 > 0 && $8 <= '"$y_max"' ){ $6="left" }\
else if( $8 == 0 && $6 > 0 && $6 <= '"$x_max"' ){ $6="bottom" }\
else if( $8 == '"$y_max"' && $6 > 0 && $6 <= '"$x_max"' ){ $6="top" }\
else if( $6 == '"$x_max"' && $8 > 0 && $8 <= '"$y_max"' ){ $6="right" } \
else {$6="o_0"} }\
{ print }'
And you get:
pato A name 0.2 0.4 left 0 0.2
pato B name 0.2 0.4 right 0 0.4
pato C name 0.2 0.4 bottom 0 0
pato D name 0.2 0.4 top 0 0.9
Then the columns your are asking are, those counting from left to right starting in $1, and yes i did a typo in the final code, the 88 is from the original data,
, not the fake one.
I am running you script give a couple of minutes to get back to you
Quote:
Originally Posted by grail
Were you able to check if my code worked for you?
If you can tell me what the following values refer to I can refine to see if I can get your output:
Code:
$1 =
$6 =
$8 =
$11 =
$12 =
$17 =
I already have [xy]max
btw. awk does not have an "else if" statement, but it does allow single line entries after an else or an if.
The lines written in your code are equivalent to:
Code:
awk '{
if( $6 == 0 && $8 > 0 && $8 <= '"$y_max"' ){ $6="left" }\
else
if( $8 == 0 && $6 > 0 && $6 <= '"$x_max"' ){ $6="bottom" }\
else
if( $8 == '"$y_max"' && $6 > 0 && $6 <= '"$x_max"' ){ $6="top" }\
else
if( $6 == '"$x_max"' && $8 > 0 && $8 <= '"$y_max"' ){ $6="right" } \
else {$6="o_0"} }\
{ print }'
|
p.s. Use this data:
garbage
garbage
garbage
garbage
flag_square
coordinates ( 0 0 ) ( 1500 900 ) ;
glaf_square
garbage
garbage
garbage
garbage
garbage
garbage
flag_data
- A + data data_name_des
+ data data
+ data ( 0 200 ) data
+ data name ( 0 0 ) ( 200 400 ) ;
- data.data + data data_garbage_des
+ data data
+ data ( 10 5 ) data
+ data name ( %% %% ) ( ## ## ) ;
- B + data data_name_des
+ data data
+ data ( 1500 400 ) data
+ data name ( 0 0 ) ( 200 400 ) ;
- data.data + data data_garbage_des
+ data data
+ data ( 5 3 ) data
+ data name ( %% %% ) ( ## ## ) ;
- data.data + data data_garbage_des
+ data data
+ data ( 5 3 ) data
+ data name ( %% %% ) ( ## ## ) ;
- data.data + data data_garbage_des
+ data data
+ data ( 5 3 ) data
+ data name ( %% %% ) ( ## ## ) ;
- data.data + data data_garbage_des
+ data data
+ data ( 5 3 ) data
+ data name ( %% %% ) ( ## ## ) ;
- C + data data_name_des
+ data data
+ data ( 700 0 ) data
+ data name ( 0 0 ) ( 200 400 ) ;
- D + data data_name_des
+ data data
+ data ( 800 900 ) data
+ data name ( 0 0 ) ( 200 400 ) ;
glaf_data
garbage
garbage
garbage
garbagels