Работа линии Awk в терминале, но не на участке Gnuplot - PullRequest
2 голосов
/ 23 мая 2019

У меня есть данные в CSV-файле, где данные начинаются с восьмой строки.Есть много столбцов, но я хочу показать 46 и 47 долларов.

Я пробовал:

set encoding iso_8859_1
set key right bottom font "Helvetica,16" 
set ylabel "Average inventory ratio, {/Symbol g} [inventoried/total]" font "Helvetica,19"
set xlabel "Average time in system, {/Helvetica=19 @^{/=18-}T} [s] " font "Helvetica,19"

set xtics font "Helvetica,16"
set ytics font "Helvetica,16"
set terminal postscript eps enhanced color
set grid
set key spacing 1
set key title "Min. Stock 80%"
set key box
set output "_known_T.eps"
set datafile separator ","
plot "ratio_T.csv" every::8::18 using 46:47 w linespoints ls 20

enter image description here

, который отлично работаетно мне нужно отсортировать данные по столбцу $ 46, чтобы построить результат.

Я пробовал следующую AWK строку:

awk -F, 'NR>8{ print $46, $47 }' ratio_T.csv | sort -nk46 | tr '",' ' '

, которая работаетштраф, если выполняется в Terminal, но не в Gnuplot, делая это:

plot '<awk -F, 'NR>8{ print $46, $47 }' ratio_T.csv | sort -nk46' u 1:2  w points ls 20

Ссылка с файлом CSV находится в этой ссылке .

1 Ответ

2 голосов
/ 23 мая 2019

Вы не можете вкладывать цитаты (например, вы можете вкладывать скобки, например ((() ()))). Вместо этого вы можете смешивать одинарные кавычки в двойных, например:

plot "<awk -F, 'NR>8{print $46, $47}' ratio_T.csv|sed 's/\"//g'|sort -nk1" ...

или, если вы предпочитаете, вы можете использовать 2 одинарные кавычки в одинарных кавычках, и они станут одинарными, что менее очевидно, например:

plot '<awk -F, ''NR>8{print $46, $47}'' ratio_T.csv|sed ''s/"//g''|sort -nk1' ...

Обратите внимание, что внутри "..." будьте осторожны, если используете обратную косую черту \, поскольку она используется для экранирования восьмеричных кодов символов, перевода строки и " (например, "\033 \" \n").

...