Есть ли способ заставить split / csplit работать в системе linux со столбцами, в которых есть символ новой строки? - PullRequest
1 голос
/ 16 апреля 2020

У меня возникают проблемы при попытке разбить большие файлы на несколько меньших, где в одном столбце есть новые строки. В файле CSV, который я пытаюсь разбить, в нем есть разделители, которые представляют собой каналы (|), и каждая строка разделяется символом новой строки (\ n). Поскольку в 1 столбце есть несколько новых строк, это может привести к тому, что CSV-файл будет выглядеть примерно так:

col1 | col2 | col3 | вставьте сюда что-нибудь

, что означает

новые документы

или форматы

случайный текст

текст | col5 | col6 | col7

При разделении это может привести к тому, что мой документ (если используется разделение по строкам или байты) будет разбит только в середине col4. Если это произойдет, файл испорчен, и я не могу обработать его позже, чтобы вставить эти данные в мою таблицу.

Я пробовал использовать split и csplit, но я не уверен, что могу добиться хорошего разбиения на основе строк + разделитель. Если я попытаюсь использовать регулярное выражение csplit там, где оно совпадает (| и новая строка), оно просто подберет это: text | col5 | col6 | col7 -> так что это не сработает, к сожалению.

У нас заканчиваются решения, может быть, это совсем невозможно с split и csplit, но я открыт для предложений. Спасибо!

...