У меня есть один текстовый файл на уровне хоста Ex: /tmp/file.txt . Итак, у меня есть один сценарий, и мне нужно построчно читать из file.txt , поэтому я использовал команду sed
. Итак, я использую цикл while в скрипте, и я вошел в систему на уровне БД, как я могу использовать команду sed
или аналогичную sed
для доступа к однострочным данным из file.txt? на уровне базы данных
Пример: sed -n '5p' "/tmp/file.txt" (или) awk 'NR == 5' /tmp/file.txt[12161 sizes Итак, этот вывод я хочу проверить уровень базы данных после команды
isql
? Является ли это возможным. Может ли кто-нибудь предложить альтернативу?
Вы, вероятно, ищете Sybase Adaptive Server xp_cmdshell
:
Описание
Выполняет команду собственной операционной системы на хосте. система, на которой работает Adaptive Server.
Синтаксис
команда xp_cmdshell [, no_output]
Для ваших команд:
xp_cmdshell 'sed -n 5p /tmp/file.txt'
xp_cmdshell 'awk "NR==5" /tmp/file.txt'
Будьте осторожны с разными типами цитат при использовании кавычек внутри кавычек.
Re: Итак, этот вывод я хочу проверить на уровне базы данных после команды 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 , быть осторожен. Иногда для знаков доллара требуются дополнительные обратные косые черты