Глядя на документы для csvprintf , вы конвертируете CSV в XML, а затем анализируете его с помощью регулярных выражений. Это вообще очень плохая идея.
Возможно, вы захотите установить csvkit , тогда вы можете сделать
csvcut -c prod input.csv | sed 1d
Или вы можете использовать язык, который поставляется с модулем синтаксического анализа CSV. Например, рубин
ruby -rcsv -e 'CSV.read("input.csv", :headers=>true).each {|row| puts row["prod"]}'
Какой бы метод вы ни использовали, считайте результаты в массив bash с помощью этой конструкции
mapfile -t products < <(command to extract the product data)
Затем для печати элементов массива:
for prod in "${products[@]}"; do echo "$prod"; done
# or
printf "%s\n" "${products[@]}"
Кавычки вокруг расширения массива являются критическими. Если пропущено, вы увидите одно слово в строке.
Совет: не используйте имена переменных ALLCAPS в оболочке: оставьте их для оболочки. Однажды вы напишите PATH=something
, а затем удивитесь, почему ваш скрипт не работает.