如何从 unix sed 命令读取大型机文件?

How to read mainframe file from unix sed command?

我正在尝试通过 'sed' 读取大型机文件,但无法读取。 此脚本是从大型机 JCL 调用的,因此它内置了 tcsh。

sed -n '1,10p' mainframeFile 

不会产生任何结果,因为它无法读取。

当您提到大型机文件时,我假设您指的是 MVS 文件而不是 USS 文件,因为 USS 文件与任何其他文件一样为 sed 指定。

sed 不能直接使用,您可以使用此黑客通过使用 cat 并将其泵送到标准输出和管道来使其工作。阅读下文了解有关 MVS 数据集和命令行实用程序的更多信息。它还包含有关如何在 cat.

等 USS 命令中指定 MVS 数据集的参考资料

我在本地系统上试过了,它与这个 sed 命令一起工作。

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

// JOB (CCCCCCCC),'HOGSTROM',
// MSGLEVEL=(1,1), // MSGCLASS=O,
// CLASS=A,
// NOTIFY=&SYSUID

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

// BOB (CCCCCCCC),'HOGSTROM',
// MSGLEVEL=(1,1),
// MSGCLASS=O,
// CLASS=A,
// NOTIFY=&SYSUID

为什么不在 sed 中?

在命令行上支持 MVS 文件名的实用程序有限。 article from IBM 概述了支持的实用程序。

很遗憾,sed 不在列表中

The following utilities support the use of MVS™ file names.

Consult the description for each utility for limitations and exceptions:
- automount
- c89
- cp
- mv
- pax
- tar
MVS data sets that are defined with DSNTYPE=LARGE are not supported.

本节讨论访问 MVS files in USS