Назад | Перейти на главную страницу

как использовать команду awk или sed (команды уровня ОС) на уровне Sybase

У меня есть один текстовый файл на уровне хоста Ex: /tmp/file.txt. Итак, у меня есть один сценарий, и мне нужно читать строку за строкой из file.txt, поэтому я использовал sed команда. Итак, я использую цикл while в скрипте, и я вошел в систему на уровне БД, как я могу использовать sed команда или аналогичный sed для доступа к однострочным данным из file.txt? на уровне базы данных

Пример: sed -n '5p' "/tmp/file.txt" (or) awk 'NR==5' /tmp/file.txt

Итак, этот вывод я хочу проверить на уровне db после isql команда? Является ли это возможным. Кто-нибудь может предложить альтернативу?

Re: Итак, этот вывод я хочу проверить на уровне db после команды isql? Является ли это возможным. Кто-нибудь может предложить альтернативу?

Вы говорите: 1) хотите обработать вывод команды уровня базы данных, используя синтаксис сценария оболочки? Или 2) Или взять вывод сценария оболочки и отправить его для обработки в базе данных?

Если 1), есть альтернатива isql, называемая sqsh. Вы можете сделать это с помощью sqsh:

sqsh -SMYSERVER -Dmydb -Umylogin -w180
<mypassword>
select blah_column from blah_table
go |  sed 's/thingy/widget/g'

Если 2), пусть ваш сценарий оболочки создает команды SQL для вывода и запускает их для базы данных с помощью isql -i (или sqsh -i)

Обратите внимание: при использовании awk в sqsh будьте осторожны. Иногда для знаков доллара требуются дополнительные обратные косые черты.

Вы, вероятно, ищете Sybase Adaptive Server xp_cmdshell:

Описание

Выполняет команду собственной операционной системы в хост-системе, на которой работает Adaptive Server.

Синтаксис

xp_cmdshell command [, no_output]

Для ваших команд это будет:

xp_cmdshell 'sed -n 5p /tmp/file.txt'

xp_cmdshell 'awk "NR==5" /tmp/file.txt'

Будьте осторожны с разными цитата типы при использовании кавычек внутри кавычек.