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

Я хочу прочитать части большого файла csv между строками n и m и между столбцами p и q. Есть ли простой способ сделать это легко с оболочкой? (Есть ли команды, которые я должен прочитать документам? В противном случае я напишу скрипт python)

1
задан 12 February 2014 в 21:34

2 ответа

Вы можете комбинировать awk и sed с каналом

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

10 и 50 являются строками.

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

$ 3 и $ 4 - поля, которые должны отображаться.

1
ответ дан 24 May 2018 в 11:52

Следующий сценарий с использованием 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

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

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

Он даст строку печати от 11 до 32 и столбец с 4 по 7 из mycsvfile.csv

1
ответ дан 24 May 2018 в 11:52

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

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