emerge не может предотвратить установку, так как не может найти имя пакета

Использование csvkit,

$ csvsql -H --query 'SELECT a,min(b),max(c),d FROM file GROUP BY a' file.csv
a,min(b),max(c),d
164318,1449,1457,1922
841422,1221,1228,1860
842179,2115,2118,1485
846354,1512,1513,1590

Это загрузит данные CSV во временную базу данных (SQLite по умолчанию, я полагаю ), а затем применит к ней заданный SQL-запрос. По умолчанию таблица будет иметь то же имя, что и входной файл (без суффикса ), и, поскольку в данных отсутствуют заголовки столбцов, имена полей по умолчанию будут в алфавитном порядке.

Опции -Hсообщают csvsql, что данные не имеют заголовков столбцов.

Чтобы удалить сгенерированный заголовок в выводе, передайте результат через что-то вроде sed '1d'.

Для получения нуля -заполненных целых чисел:

$ csvsql -H --query 'SELECT printf("%07d,%06d,%06d,%06d",a,min(b),max(c),d) FROM file GROUP BY a' file.csv
"printf(""%07d,%06d,%06d,%06d"",a,min(b),max(c),d)"
"0164318,001449,001457,001922"
"0841422,001221,001228,001860"
"0842179,002115,002118,001485"
"0846354,001512,001513,001590"

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

$ csvsql -H --query 'SELECT printf("%07d",a),printf("%06d",min(b)),printf("%06d",max(c)),printf("%06d",d) FROM file GROUP BY a' file.csv
"printf(""%07d"",a)","printf(""%06d"",min(b))","printf(""%06d"",max(c))","printf(""%06d"",d)"
0164318,001449,001457,001922
0841422,001221,001228,001860
0842179,002115,002118,001485
0846354,001512,001513,001590

Опять же, выходной заголовок можно удалить, передав результат через sed '1d'.

0
18.02.2021, 02:27
0 ответов

Теги

Похожие вопросы