Примечание. Сценарий, приведенный ниже, приведет к созданию дополнительного пустого массива, но он должен выполнить свою работу.
Анализ .csv
файлов с Bash, вероятно, не самый эффективный, но Есть способ сделать это. Обратите внимание, что массивы в Bash разделены space
, а не ,
.
. В приведенном ниже примере входной файл .csv
равен input.csv
, а выходной файл - output.txt
.
#!/bin/bash
{
read
read
var=0
while IFS=, read -a arr
do
var=$((var+1))
echo "array${var}=(${arr[@]})" >> output.txt
done
} < input.csv
Дополнительные пояснения
* Ключом здесь являются две строки read
: он читает первые две строки вашего .csv
ввода и затем вводит l oop, когда начнется чтение третьей строки.
* Согласно документации здесь , флаг -a
назначает считанные слова последовательным индексам переменной массива ARRAY. , начиная с нуля .
* "@" используется для доступа ко всем значениям в сгенерированном массиве, полученных в результате read -a
Отредактировал мой скрипт на основе предложения @ Poshi. Скрипт выглядит чище.