Объединить два CSV-файла в сценарии Gnuplot - PullRequest
0 голосов
/ 29 ноября 2018

Этот вопрос является продолжением Как запустить команду оболочки в Gnuplot и поместить вывод в новый файл , и пример такой же.

В этом вопросе дан ответкак взять CSV-файл, в котором все данные разделены ",", и удалить эти символы из 8-й строки, а затем отсортировать результат по значениям 36-го столбца.

Я пробовал решение дляНапример,

`tail -n+8 Hight_6x6.csv | tr '",' ' ' | sort -nk36`

и работает нормально.

Теперь я хотел бы сделать то же самое, но с объединенным результатом двух похожих файлов CSV.То есть, взять два файла из 8-й строки, добавить один к другому и отсортировать по столбцу 36.

Следующая строка

`cat 2x2/Hight_2x2.csv <(tail +8 2x2b/Hight_2x2_b.csv) | tail -n+8  | tr '",' ' ' | sort -nk36`

делает то, что я хочу сделать в терминалено это дает ошибку в Gnuplot.Ошибка говорит о том, что есть неожиданный символ '('. Два файла для объединения находятся в разных подкаталогах (2x2 и 2x2b), из которых я запускаю скрипт. Файлы CSV находятся по этой ссылке .

С уважением

1 Ответ

0 голосов
/ 01 декабря 2018

Чтобы избежать экранирования одинарных или двойных кавычек, вы можете использовать третью форму цитирования, здесь-документ , чтобы создать блок данных.Затем вы можете передать блок данных в команду bash:

$datablock << EOD
cat a.csv <(tail -n+2 b.csv) | tail -n+8  | tr '",' '  ' | sort -nk36 >pe_H_6x6.txt
EOD

set print "|bash -x"
print $datablock
set print

-x здесь просто для проверки выполняемой команды.

...