Как обрабатывать непечатаемые символьные параметры ASCII? - PullRequest
1 голос
/ 20 января 2010

Я работаю над проектом, в котором мы имеем дело с импортом / экспортом данных из таблиц базы данных с использованием сценариев ksh и Perl. У нас есть существующий процесс для экспорта данных из таблицы в файл, который затем импортируется в другую систему.

Вот подвох - процесс экспорта выводит файлы с разделителями канала, в то время как система, выполняющая импорт, ожидает файлы, разделенные символом разделителя группы ASCII, который является десятичным 29, шестнадцатеричным 1d или восьмеричным 35. Он отображается в vi как ^] Сейчас я конвертирую разделитель через скрипт Perl. Что я хотел бы сделать, так это сказать нашему процессу экспорта, чтобы мы просто использовали ожидаемый разделитель. Что-то вроде:

export_table.ksh -d '\ 035'

Проблема в том, что я не могу понять, как передать этот символ в сценарий экспорта.

Я испробовал все виды комбинаций одинарных, двойных кавычек, обратной косой черты и восьмеричной и шестнадцатеричной версии этого символа.

Я на Solaris 10 использую ksh и / или Perl.

Ответы [ 2 ]

2 голосов
/ 20 января 2010

вы пробовали:

$ '\ x29'

на самом деле попробуйте это для]:

echo $'\x5d'

и для ^

echo $'\x5e'

так что вам просто нужно сделать:

export_table.ksh -d $'\x5e\x5d'
0 голосов
/ 20 января 2010

В bash (1) можно ввести префикс символа с помощью ^ v, чтобы дословно ввести этот символ.Возможно, ksh (1) делает то же самое?

...