LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

Есть два типа файлов, не надо их путать.

  1. данные в столбцах, разделённые символом (DSV, https://en.wikipedia.org/wiki/Delimiter-separated_values ). Это стандартный юниксовый стиль файлов. Символом часто выбирают TAB и тогда формат называется https://ru.wikipedia.org/wiki/TSV, хотя например в /etc/passwd используется :. Нюанс в том, что символ-разделитель (а также перевод строки) никак никогда не может использоваться внутри данных.

  2. CSV - https://ru.wikipedia.org/wiki/CSV - это сравнительно сложный формат с несколькими способами закавычивать данные, делать вложенные кавычки и т.д.

Сформировать его, впрочем, не так сложно, как парсить, в твоём случае надо удвоить кавычки "->"" и каждое поле заключить в такие же двойные кавычки. Получится вот такое уродство:

"some string","another string","                    {
                        ""key3"": ""int"",
                        ""Array3"": [],
                        ""Array4"": [],
                        ""Array5"": [],
                        ""Array6"": [
                            {
                                ""key4"": ""one more string"",
                                ""key5"": ""last string""
                            }
                        ]
                    }"

И, скажем, в экселе оно откроется, а awk’ом его уже не распарсишь.

Исходная версия legolegs, :

Есть два типа файлов, не надо их путать.

  1. данные в столбцах, разделённые символом. Это стандартный юниксовый стиль файлов. Символом часто выбирают TAB и тогда формат называется https://ru.wikipedia.org/wiki/TSV, хотя например в /etc/passwd используется :. Нюанс в том, что символ-разделитель (а также перевод строки) никак никогда не может использоваться внутри данных.

  2. CSV - https://ru.wikipedia.org/wiki/CSV - это сравнительно сложный формат с несколькими способами закавычивать данные, делать вложенные кавычки и т.д.

Сформировать его, впрочем, не так сложно, как парсить, в твоём случае надо удвоить кавычки "->"" и каждое поле заключить в такие же двойные кавычки. Получится вот такое уродство:

"some string","another string","                    {
                        ""key3"": ""int"",
                        ""Array3"": [],
                        ""Array4"": [],
                        ""Array5"": [],
                        ""Array6"": [
                            {
                                ""key4"": ""one more string"",
                                ""key5"": ""last string""
                            }
                        ]
                    }"

И, скажем, в экселе оно откроется, а awk’ом его уже не распарсишь.