2015-09-18 2 views
2

Я хочу построить изображения с циклом в скрипте gnuplot, но есть проблема с линией «sed». Кто-нибудь знает, как его решить?Использование sed с gnuplot для построения определенных строк из файла в цикле

Вот мой сценарий:

do for [i=1:2] { 
    str_n=sprintf('%d',i) 
    set term png 
    set output str_n.'.png' 
    plot "<(sed -n '(1+45*(i-1)),(45+45*(i-1))p file.dat'" u 2:5 w l 
    set output 
} 
+1

'sed' синтаксис неверен ... Пожалуйста, покажите содержимое' file.dat' – Kalanidhi

+0

файла .dat - это файл с 450 строками и 5 colomns, и я хочу нарисовать изображение с каждым блоком данных из 45 строк и 5 colomns. –

ответ

2

Похоже, вы пытаетесь использовать переменную цикла gnuplot i внутри команды sed. Для того, чтобы сделать это, я бы использовать sprintf при построении SED команды:

cmd = sprintf("<sed -n '%d,%dp' file.dat", 1+45*(i-1), 45*i) 
plot cmd u 2:5 w l 

Это позволяет вычислить число с помощью GNUPLOT перед построением команды для СЭД.

еще лучше, вы должны использовать встроенные возможности GNUPLOT, чтобы построить определенный диапазон строк:

plot "file.dat" every ::(1+45*(i-1))::(45*i) 
+0

ty для помощи ур, Том. Ур методы работают так хорошо, ты полностью меня, очень много, xd –

0

попробовать что-то вроде этого внутри строки

sed -n '$(((1+45*(${i}-1)))),$(((45+45*(${i}-1)))) p' file.dat" 

также <( немного странно, потому что я не знаю, если эта часть строки или попытки перенаправления, но я думаю, по крайней мере ) отсутствует в конце в случае шаблона строки.

+0

. Я не знаю, допустила ли я ошибку с помощью метода ur ... но это не работает. Что ж. –