Могу ли я запустить grep для набора данных zOS через системные службы Unix?
У меня есть поиск, который я хотел бы запустить в наборе данных zOS, и я знаю, как сформировать команду grep. У меня есть доступ к машине через системные службы Unix, как мне обратиться к набору данных из этой среды?
6 ответов
Нет необходимости сначала cp. Вы можете кошку, хвост, grep и т. Д. Следует помнить специальное цитирование, и перед DSN ставятся две косые черты:
кот "//'s052WX.EO.REXX(MYREXXSOURCE)'" | grep parse
Если вы посмотрите справочное руководство по командам UNIX под командой cp, есть больше информации.
Насколько большой набор данных мы говорим?
Системные сервисы Unix cp
Команда может принимать наборы данных в качестве источника и файл (или каталог) Unix в качестве цели, поэтому, если набор данных достаточно мал, вы можете скопировать его в файлы и grep
прочь к сердцу.
В качестве альтернативы, если вы можете открыть свой набор данных в ISPF
на машине z/OS вы можете рассмотреть возможность использования FINDRX (который дает базовые возможности ISPF для регулярных выражений) - я сам никогда не использовал его, поэтому не могу ручаться за то, работает он или нет.
В настоящее время вы можете использоватьdgrep
команда
Как сказано в инструкции:
«Поиск шаблона во всех наборах данных (разделенных и последовательных), соответствующих одному или нескольким шаблонам набора данных»
Синтаксис:
dgrep [-hinvd] [-C<num>] <pattern> [<dataset-pattern>]+
-h: syntax
-i: ignore case
-n: display line numbers
-v: print names of datasets being searched
-d: print debug messages
-C: display <num> lines of context around a match
Например:
$ dgrep DSALET36 IBMUSER.*.ISPPROF
IBMUSER.SYSTEM.ISPF.ISPPROF ISRLLIST 34
Больше приложений и примеров: здесь
Насколько я знаю, есть два варианта:
Скопируйте файлы в uss-файловую систему и
grep
там, как упоминалось выше; работает для меня.Создать внешнюю ссылку (
~ /usr/sbin/mount -f host.quali.pda -O 'SYNC(120)' mountpoint
) а такжеgrep
по этой ссылке; в настоящее время у меня не работает из-за прав-ограничений.
cat
-suggestion хорошо работает для одного файла, но не для всех pds-членов (по крайней мере, я не смог заставить его работать).
- z/OS поддерживает API и приложения UNIX ( Single UNIX Specification) через USS (системы U NIX).
- Open Group сертифицирует z/OS как совместимую операционную систему UNIX - с иерархическими файловыми системами HFS и zFS в стиле UNIX / Linux.
Я наткнулся на эту тему после того, как около часа бился головой о стену. Мой опыт - как новичка в Z/OS, MVS и т. д. - заключается в том, что grep против PD (или это PDS или DSN, кто знает!) заключается в том, что это невозможно сделать напрямую.
Итак, скажем, у меня есть текст в таком месте: MYUSERID.SOME.DATA(DATA1)(позвольте мне вставить, я понятия не имею, как ссылаться на такую «вещь» данных, я думаю, что это «PD»)
Теперь, если я попытаюсь выполнить grep против PD, используя, казалось бы, разумный синтаксис:
===>grep FindMe "//'MYUSERID.SOME.DATA(DATA1)'"
$ grep: FSUM6261 read error on file "//'MYUSERID.SOME.DATA(DATA1)'": EDC511
3I Bad file descriptor.
Некоторые другие служебные функции UNIX работают, например:
===>cat "//'MYUSERID.SOME.DATA(DATA1)'"
и
===>cp "//'MYUSERID.SOME.DATA(DATA1)'" ./data.data
Другие, к сожалению, не делают этого:
==>ls "//'MYUSERID.SOME.DATA(DATA1)'"
ls: FSUM6785 File or directory "//'MYUSERID.SOME.DATA(DATA1)'" is not found
И - не забывайте, труба - ваш друг, за исключением того, что это может быть не "|" характер. Это может быть знак "!" (восклицательный знак) символ.
По сути, это упражнение «попробовать», как вы это делаете в реальной комбинации ОС/SHELL, например, linux/BASH, а когда это не сработает, придумайте обходной путь для этой идиотской, архаичной системы.
Итак, мое решение вашего точного вопроса:
===> cat "//'MYUSERID.SOME.DATA(DATA1)'" ! grep FindMe