У меня есть несколько файлов данных для импорта в базу данных с некоторыми «уникальными» разделителями:
Разделитель поля (FS): SOH (ASCII символ 1)
Разделитель записей (RS): STX (символ 2 ASCII) + ’\ n’
Я бы хотел импортировать файлы в Postgres с помощью команды COPY, но, хотя я могу указать разделитель настраиваемого поля, он не может обрабатывать разделитель записей.
Я также не могу просто вырезать \ 002 из данных, потому что если в одном из полей (и они есть) есть новая строка, то КОПИЯ будет неправильно думать, что это новая запись, хотя на самом деле это не так.
Следует отметить одну важную вещь: не важно, что в полях сохраняются символы новой строки, хорошо, если они просто преобразуются в пробел.
Имея это в виду, я думал о том, чтобы использовать что-то вроде «sed» для преобразования новых строк в пробелы, а затем преобразования \ 002 в новые строки. Тем не менее, поскольку sed - это инструмент, основанный на строках, он не видит новые строки в конце каждой строки и не может выполнять поиск / замену по ним.
Существуют ли какие-либо другие инструменты командной строки Unix, которые могут выполнить эту работу?
РЕДАКТИРОВАТЬ: я думаю, что я действительно запрашиваю, утилита Unix, которая может обрабатывать файл (выполнять поиск / замену) как "двоичный", не разбивая его на строки