Вывести вывод в виде columnName = columnValue из CSV-файла с помощью Shell Script или awk - PullRequest
1 голос
/ 04 мая 2020

У меня есть CSV-файл, который выглядит следующим образом:

US,China,South Africa
1000,0,129

Вывод, который я ищу:

Value of US = 1000
Value of China = 0
Value of South Africa = 129

Мой CSV-файл был отфильтрован и содержал только одну строку кроме ряда заголовков столбцов. Вышеприведенные операторы повторяются для всех столбцов в файле CSV.

Некоторая дополнительная информация:

Во-первых, имена столбцов и значения в файле CSV разделяются запятыми. Файл был сгенерирован таким образом, и я не изменял разделители.

Во-вторых, все имена моих столбцов являются строками (могут содержать пробелы между ними), в то время как все мои значения являются положительными числами (целыми числами).

Наконец, я также провел перекрестную проверку моего csvfile, и каждый столбец имеет соответствующее значение (т. Е. Нулевые значения).

До сих пор я пробовал следующее:

csvcut -n filename.csv #To try and get the column names to iterate through them

Однако вышеприведенная команда возвращает вывод, например:

1: US
2: China
3: South Africa

Отдельно, учитывая имя столбца в качестве входных данных для моего сценария оболочки, я написал

echo "Value of $1 = `csvcut -c $1 filename.csv`"

При запуске как sh my_script.sh US,

Я получаю вывод

Value of US = 1000

Я просто не могу понять, как это сделать во всех столбцах.

Редактировать

Поскольку вопрос был закрыт, правильное решение найдено в комментариях.

Благодарим Эд Мортона.

Другим, кто сталкивается с этим проблема, решение, как показано ниже:

awk -F, 'NR==1{split($0,h);next} {for (i=1;i<=NF;i++) print "Value of", h[i], "=", $i}' file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...