У меня есть один текстовый файл на уровне хоста 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'
Будьте осторожны с разными цитата типы при использовании кавычек внутри кавычек.