Извлечение части массивного CSV-файла из командной строки

Это полностью законно.

Примеры выпущенных Ubuntu:

Linux Mint Elementary OS

Кроме того, Ubuntu сам не будет в

Существует страница об лицензировании Ubuntu, в частности:

, если это не для Debian.

! d13] Программное обеспечение, установленное по умолчанию Когда вы устанавливаете Ubuntu, вы обычно устанавливаете полную среду рабочего стола. Также возможно установить минимальный набор программ (достаточно для загрузки вашей машины), а затем вручную выбрать точные программные приложения для установки. Такую «обычную» установку обычно предпочитают администраторы серверов, которые предпочитают хранить только программное обеспечение, которое им абсолютно необходимо на сервере. Все прикладное программное обеспечение, установленное по умолчанию, является свободным программным обеспечением. Кроме того, мы устанавливаем некоторые аппаратные драйверы, доступные только в двоичном формате, но такие пакеты четко обозначены в ограниченном компоненте.

(выделено мной)

Существует проблема Ubuntu Branding.

Политика товарного знака объясняет это:

Программное обеспечение установлено по умолчанию

Защита сообщества. Ubuntu построен и в основном для сообщества. Мы разделяем доступ к товарным знакам со всем сообществом в целях обсуждения, развития и пропаганды. Мы признаем, что большинство областей обсуждения и разработки с открытым исходным кодом предназначены для некоммерческих целей и позволят использовать товарные знаки в этом контексте при условии, что: Товарный знак используется в соответствии с Руководством по использованию ниже, нет коммерческого намерения за тем, что вы имеете в виду, на самом деле является Ubuntu. Если кто-то запутался в мысли, что то, что не является Ubuntu на самом деле Ubuntu, вы, вероятно, что-то не так, нет никаких предложений (через слова или внешний вид), что ваш проект одобрен, спонсирован или связан с Ubuntu или связанными с ним проектами, если только он фактически был одобрен и подотчетен Совету сообщества Ubuntu

Разрешенное использование. Некоторые виды использования Товарных знаков прекрасны, и нам не требуется никакого специального разрешения.

Итак, (в этом не-адвокатском заключении), пока вы даете понять, что это Ubuntu derivative (подобно тому, как Ubuntu основан на Debian), вы в порядке.

2
задан 12 February 2014 в 19:34

3 ответа

У меня был скрипт, который я настроил (хорошая идея (N + 1) q часть!) Благодаря комментарию @chronitis и ответу SO :

#! /bin/bash 
#
N=10
M=20
P=2
Q=3
sed -n "$N,${M}p; $((M+1))q" $1 | cut -d, -f$P-$Q

Сохраните файл, например, cut_csv, сделать его исполняемым и использовать как

cut_csv file

Его можно сделать более привлекательным, приняв в качестве входных данных параметры N, M, P, Q и т. д., но я использую его редко, поэтому обычно просто редактируйте файл.

Как это работает :

Основная команда следующая (предположим, N = 10, M = 20, P = 2, Q = 3); оболочка подставляет переменные, и последняя строка становится: (1)

sed -n "10,20p ; 21q" file | cut -d, -f2-3

Давайте начнем с первой команды:

sed -n "10,20p ; 21q" file 

Этот вызов sed (потоковый редактор, man sed ) в режиме отсутствия печати (-n) и выполните в файле следующие команды:

  1. напечатайте (p) строки между 10 и 20 (это часть 10,20p)
  2. выходить (q) при чтении строки 21 (21q), так что отбрасывать оставшуюся часть файла

Выходные данные sed передаются по конвейеру (|) в cut:

cut -d, -f2-3

Эта команда (man cut) выбирает поля строки (и повторяется для каждой строки). В этом случае я говорю, что разделитель между полями (столбцами) является запятой (-d,), и распечатывает столбцы между 2 и 3.

В качестве другого более сложного примера я часто использую этот:

sed -n "1p; 10,14p; 21q" data.csv | cut -d, -f1,4-8

Это выберет строку 1 (где у меня есть заголовки :-)) и строки от 10 до 14 (5 строк); затем выберите столбцы 1 (время в моих данных ...) и столбец от 4 до 8. Это действительно очень важно, как только вы овладеете им.

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

#! /bin/bash -xv

Теперь оболочка будет выведите каждую команду, которую она читает, и результат подстановок:

(0)asus-rmano: part_of_csv.sh p20dedo.csv
#! /bin/bash -xv
#
N=10
+ N=10
M=20
+ M=20
P=2
+ P=2
Q=3
+ Q=3
sed -n "$N,${M}p; $((M+1))q" $1 | cut -d, -f$P-$Q
+ cut -d, -f2-3
+ sed -n '10,20p; 21q' p20dedo.csv
16:05:49,000
16:05:51,000
[...]
0
ответ дан 12 February 2014 в 19:34

Вы можете комбинировать awk и sed с помощью трубы

sed -n '10,50p' file.csv | awk -F ';' '{print $3 $4}'

10 и 50 - ряды.

-F ';' это разделитель полей. (Точка с запятой в моем примере)

$ 3 и $ 4 - это поля для отображения.

0
ответ дан 12 February 2014 в 19:34

Следующий скрипт, использующий head и tail, способен печатать часть файла .csv, отфильтрованную по номеру строки и столбца.

#!/bin/bash
m="$2"
n="$3"
s="$4"
t="$5"
head -n "$n" "$1" | tail -n +"$m" | cut -d, -f "$s"-"$t"

Сохраните приведенный выше скрипт как csv_view.sh и сделайте его исполняемым.

chmod +x csv_view.sh

где,

m=row number where to begin
n=row number where to end
n=column number where to begin
n=column number where to end

Как использовать

./csv_view.sh mycsvfile.csv 11 32 4 7

Это даст печать строк с 11 по 32 и столбцов с 4 по 7 из mycsvfile.csv

0
ответ дан 12 February 2014 в 19:34

Другие вопросы по тегам:

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