Я имею дело с несколькими файлами, и я хочу построить карту тепла every ::121::600 using 3:25:43
из этих файлов. Есть ли способ, чтобы объединить все файлы на лету, чтобы получить тепловую карту с командами, как:Карта тепла из нескольких файлов с cat, awk или sed (bash)
set dgrid3d
splot '< cat data1.csv data2.csv data3.csv data4.csv' every ::121::600 using 3:25:43 w pm3d
Я попробовал это, но кажется, что только данные data1.csv показывает в сюжете. Я что-то делаю с '
или ,
? Есть awk
, или sed
вариант?
Я знаю вариант set table
, но я бы предпочел бы, чтобы чистая команда команды bash прямо делала это на лету.
Есть ли хороший ресурс для поиска всех команд unix с некоторыми демонстрациями gnuplot?
Спасибо за ответ: , так что '
предназначены для команды plot: например. plot 'data1.csv' using 1:2 w l
будет печатать строку 1 в строке 2 из файла data1 с помощью строк. поэтому я использовал команду '
в команде. Я нашел это Site где эй объяснить команды некоторого Баша для gunplot, но я до сих пор не нашел то, что я ищу
Спасибо за большой и помощь акустического отклика по поводу моей проблемы: Это сработало:
plot '< for i in data1.csv data2.csv data3.csv data4.csv; do cat "$i"; echo; done' every ::121::600 using 3:25:43 w pm3d
Стоит отметить, что у меня было объявление "
вокруг $i
как vagoberto предлагаемого
и это работало точно так же:
plot '< awk "FNR==1{print \"\"}1" data1.csv data2.csv data3.csv data4.csv' every ::121::600 using 3:25:43 w pm3d
оба работали на моей среде Mac OSX Terminal, а на Wind 7 с установленным пакетом gnuWin32.
Я не знаю, о Gnuplot, но ваше описание создает впечатление, что вы, возможно, захотите [процесс замещения] (https://www.gnu.org /software/bash/manual/bash.html#Process-Substitution). Синтаксис: '<(данные кошки * .csv)'. В зависимости от того, требует ли 'splot' поиск во входном файле, это может дать вам ошибку, потому что подстановка процесса в основном возвращает символьное устройство. В Zsh есть альтернативный синтаксис '= (данные cat * .csv)', который дает вам файл для поиска. – 4ae1e1
Спасибо. Является ли это правильным синтаксисом: '' = (cat data1.csv data2.csv data3.csv data4.csv каждый :: 121 :: 600 с помощью 3:25:43 w pm3d' Я пробовал, но я получаю ошибку, что data1 и т. д. не удалось найти –
Я не знаю, почему вы используете одиночные кавычки вокруг =(). Если вы используете одинарные кавычки, то вы больше не используете функции оболочки, поскольку вы передаете токен буквально. я знаю только о gnuplot, я просто говорю по моему опыту с большинством утилит командной строки * nix. Кроме того, как я уже сказал, =() работает только в zsh. – 4ae1e1