Как сделать этот awk-скрипт простым и использовать в gnuscript в форме цикла - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь построить многоцветный файл, используя скрипт gnuplot.Я делаю это как

plot "100.dat" u ($1-CONS):($2*$3)  w l lt 4 , 
"200.dat" u ($1-CONS):($2*$3)  w l lt 2 , 
"300.dat" u ($1-CONS):($2*$3)  w l lt 1

, где CONS - моя переменная, определенная в верхней части файла.

Мой набор значений xrange равен [-0.2: 0.2], тогда как данные в масштабе находятся за пределами этогоscale.

То, что я хочу захватить, - это (в форме цикла для нескольких файлов): максимальное значение выше трех графиков с отрицательной и положительной сторон и соответствующее значение столбца 1 в моем xrange для обоих максимумов.

в сценарии оболочки, я могу сделать это легко, но я сталкиваюсь с проблемой при определении в моем gnuscript, мой сценарий оболочки ниже

for i in 100.0000 200.0000 200.0000
do
    grep $i data.dat > $i.dat



awk '{print ($1-CONS), ($2*$3)}' $i.dat | awk '{ if($1 <= 0.2 && $1 >= 0.0) { print }}' > $i.p2.dat ; awk 'BEGIN {min=1000000; max=0;}; { if($2<min && $2 != "") min = $2; if($2>max && $2 != "") max = $2; } END {print min, max}' $i.p2.dat  | awk '{print $2}' > $i.p2Max.dat ;  PMAX=$(cat $i.p2Max.dat) ; grep "$PMAX"  $i.p2.dat  | tail -n 1 >> MAX.dat



awk '{print ($1-CONS), ($2*$3)}' $i.dat | awk '{ if($1 <= 0.0 && $1 >= -0.2) { print }}' > $i.mi.dat ; awk 'BEGIN {min=1000000; max=0;}; { if($2<min && $2 != "") min = $2; if($2>max && $2 != "") max = $2; } END {print min, max}' $i.mi.dat  | awk '{print $2}' > $i.mi_Max.dat ;  N_MAX=$(cat $i.mi_Max.dat) ; grep "$N_MAX"  $i.mi.dat  | tail -n 1 >> MAX.dat
done

Я ищу простой сценарий, который можно использовать вскрипт gnuplot в форме цикла, так что если у меня есть несколько файлов данных, и мне нужно собрать максимум два столбца (с обеих сторон от нуля), то он сохранит максимальное значение столбца два относительно значения столбца 1 отдельнодля отрицательной и положительной шкалы.

Я бы хотел посмотреть, можно ли это сделать с помощью цикла, чтобы мне не нужно было писать все строки подряд.

...