В случае, если вы собираетесь делать это часто, лучшим решением было бы сначала установить столбец даты как индекс, который преобразует столбец в DateTimeIndex и использовать следующее условие, чтобы разрезать любой диапазон дат.
import pandas as pd
data_frame = data_frame.set_index('date')
df = data_frame[(data_frame.index > '2017-08-10') & (data_frame.index <= '2017-08-15')]
Первая ошибка:
current_time=$(date +"%T")
new_time=$(date -d "10 seconds" +'%H:%M:%S')
current_time должно быть объявлено перед запуском sar-P, а new_time необходимо объявить после запуска sar-P
Вторая ошибка
gnuplot <<EOF
должно быть
gnuplot -p <<EOF
Это необходимо для того, чтобы график сохранялся после выполнения функции gnuplot.
Кажется, вы смешиваете bash
и gnuplot
. Первые две строки выглядят как bash
, а остальные выглядят как gnuplot
, поэтому вы, вероятно, захотите что-то вроде этого:
#!/bin/bash
current_time=$(date +"%T")
new_time=$(date -d "10 seconds" +'%H:%M:%S')
# Start "gnuplot" passing in some "bash" variables
gnuplot <<EOF
set xdata time
set timefmt "%H:%M:%S"
set xrange ["$current_time":"$new_time"]
set format x "%H:%M:%S"
plot "sar-P-plots11" using 1:2
pause -1 "Hit any key to continue"
EOF
Сохраните сценарий как plotit
, а затем сделайте его исполняемым:
chmod +x plotit
, а затем запустите его с помощью:
./plotit
current_time=$(date +"%T")
в EOF
и вставить все это в другой скрипт bash
, если это то, что вы имеете в виду.
– Mark Setchell
13 July 2018 в 17:50
new_time=...
, кажется неправильной. Я обновил его в ответе.
– Mark Setchell
13 July 2018 в 18:03