Как прочитать файл мэйнфрейма из команды unix sed? - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь прочитать файл мэйнфрейма через «sed», но он не может. Этот сценарий вызывается из JCL мэйнфрейма, поэтому в него встроен tcsh.

sed -n '1,10p' mainframeFile 

ничего не даст, так как не умеет читать.

1 Ответ

0 голосов
/ 08 ноября 2018

Когда вы ссылаетесь на файл мэйнфрейма, я предполагаю, что вы имеете в виду MVS-файлы, а не USS-файлы, поскольку USS-файлы определены для sed, как и любой другой файл.

sed не может напрямую, вы можете использовать этот хак, чтобы заставить его работать, используя cat и перекачивая его на стандартный вывод и трубопровод. Читайте ниже для получения дополнительной информации о наборах данных MVS и утилитах командной строки. В нем также есть ссылки на то, как указывать наборы данных MVS в командах USS, таких как cat.

Я пробовал это в локальной системе, и она работала с этой командой sed.

cat "//'USER1.TEST.CNTL(JOBCARD)'"

// JOB (CCCCCCCC), «ХОГСТРОМ»,
// MSGLEVEL = (1,1), // MSGCLASS = O,
// CLASS = A,
// NOTIFY = & SYSUID

cat "//'USER1.TEST.CNTL(JOBCARD)'" | sed 's/JOB/BOB/'

// BOB (CCCCCCCC), 'ХОГСТРОМ',
// MSGLEVEL = (1,1),
// MSGCLASS = O,
// CLASS = A,
// NOTIFY = & SYSUID

Почему не в sed?

Существуют ограниченные утилиты, которые поддерживают имена файлов MVS в командной строке. В этой статье от IBM описаны поддерживаемые утилиты.

К сожалению, sed нет в списке

Следующие утилиты поддерживают использование имен файлов MVS ™.

Обратитесь к описанию каждой утилиты для ограничений и исключений:
- автомонтирование
- с89
- ср
- mv
- чел
- смола
Наборы данных MVS, определенные с помощью DSNTYPE = LARGE, не поддерживаются.

В этом разделе говорится о доступе к файлам MVS в USS

...