Я хочу прочитать части большого файла csv между строками n и m и между столбцами p и q. Есть ли простой способ сделать это легко с оболочкой? (Есть ли команды, которые я должен прочитать документам? В противном случае я напишу скрипт python)
Вы можете комбинировать awk и sed с каналом
sed -n '10,50p' file.csv | awk -F ';' '{print $3 $4}'
10 и 50 являются строками.
-F ';' это полевой разделитель (точка с запятой в моем примере)
$ 3 и $ 4 - поля, которые должны отображаться.
Следующий сценарий с использованием 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