Предполагается, что все CSV-файлы, которые вы хотите обработать, имеют одинаковое количество и порядок столбцов.
#!/bin/sh
delim=$1
cols=$2
if [ -z "$delim" ] || [ -z "$cols" ]; then
echo 'missing delimiter and/or columns' >&2
exit 1
fi
shift 2
csvstack --delimiter "$delim" "$@" |
csvcut --columns "$cols"
Этот сценарий может принимать два или более аргумента. Первый будет символом-разделителем, второй — именем или номером столбцов для извлечения (можно использовать список с разделителями-запятыми -). Остальные аргументы используются как имена файлов для обработки.
Если задано только два аргумента, в качестве данных для обработки будет использоваться стандартный ввод.
Команда csvstack
используется для создания единого потока данных CSV из заданных файлов, а команда csvcut
используется для извлечения требуемых столбцов. Обратите внимание, что разделитель меняется на запятую в выводе csvstack
из того, что было во входе. Если вы извлекаете несколько столбцов и хотите указать определенный разделитель, передайте результат через csvformat
и укажите разделитель с помощью-D
(--out-delimiter
).
Пример запуска:
$ cat file1.csv
a;b;c
1;2;3
$ cat file2.csv
a;b;c
4;5;6
$ sh script.sh ';' 'a,c' file*
a,c
1,3
4,6
Ваше соединение зашифровано. «Проблема» заключается в том, что Chrome не доверяет сертификату, потому что он не подписан доверенным центром сертификации, что имеет смысл, поскольку он был создан Cockpit и самоподписанным . Вы можете либо игнорировать это (, особенно если вы подключаетесь только из частной сети ), либо получить сертификат от центра сертификации, такого как Let's Encrypt .
Кабина с инструкциями Let’s Encrypt:https://github.com/cockpit-project/cockpit/wiki/Cockpit-with-LetsEncrypt