Вот версия полностью в gnuplot, без каких-либо внешних команд. Я проверил это на gnuplot 5.0 patchlevel 3
, используя следующие bash
команды, чтобы создать простой набор данных из 20 строк, из которых только 5 строк должны быть напечатаны из строки с «началом» в столбце 1. Вам не нужно этого делать .
for i in $(seq 1 20)
do let j=i%2
echo "$i $j"
done >data.asc
sed -i data.asc -e '5a\
start'
Фактический gnuplot использует переменную endlno
, изначально установленную на NaN (не число), и функцию f
, которая принимает 3 параметра: логическое значение start
, говорящее, что в столбце 1 есть соответствующая строка, lno
текущий номер белья и текущее значение столбца 1 val
. Если номер белья меньше или равен номеру конечной строки (и, следовательно, он не равен NaN), f
возвращает val
, в противном случае, если условие начала истинно, требуемый номер конечной строки устанавливается в переменная endlno
и NaN возвращается. Если мы еще не видели начало, NaN возвращается.
gnuplot -persist <<\!
endlno=NaN
f(start,lno,val) = ((lno<=endlno)?val:(start? (endlno=lno+5,NaN) : NaN))
plot "data.asc" using (f(stringcolumn(1)eq "start", $0, $1)):2 with lines
!
Поскольку gnuplot не отображает точки со значениями NaN, мы игнорируем линии до начала и снова после требуемого количества линий.
В вашем случае вам нужно изменить 5 на 1500 и «начать» на «SET_10:».