Я пытаюсь разобрать CSV-файл, и у меня есть некоторые проблемы с IFS. Файл содержит такие строки:IFS выделяет строку типа «Hello», «World», «this», «is, boring», «line»
"Hello","World","this","is, a boring","line"
Столбцы разделены запятой, поэтому я попытался взорвать строку с этим кодом:
IFS=, read -r -a tempArr <<< "$line"
Но я получаю этот выход:
"Hello"
"World"
"this"
"is
a boring"
"line"
Я понимаю, почему, поэтому я пробовал некоторые другие команды, но я не получаю ожидаемого результата.
IFS=\",\"
IFS=\",
IFS=',\"'
IFS=,\"
Каждый раз, когда третий элемент разделен на 2 части. Как я могу использовать IFS для разделения строки на 5 частей?
"Hello"
"World"
"this"
"is, a boring"
"line"
'IFS' не предназначен для синтаксического анализа CSV-файлы; он может обрабатывать только простое разделение, которое не зависит от того, цитируется ли разделитель. Используйте язык, на котором * * имеет доступ к парсеру CSV. – chepner
Я уверен, что это можно было бы теоретически * сделать в bash. И это не должно быть так сложно. –
Не в чистом BASH, но, вероятно, gnu awk – anubhava