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

Sma*_*der 2 unix sed mainframe

我试图通过''sed'读取一个大型机文件,但它不能.正在从大型机JCL调用此脚本,因此它内置了tcsh.

sed -n '1,10p' mainframeFile 
Run Code Online (Sandbox Code Playgroud)

因为无法阅读而不会产生任何结果.

Hog*_*rom 7

当您引用大型机文件时,我假设您的意思是MVS文件而不是USS文件,因为USS文件的指定sed与任何其他文件一样.

sed不能直接,你可以使用这个hack使其工作,通过使用cat和泵送到stdout和管道.有关MVS数据集和命令行实用程序的更多信息,请阅读下文.它还有关于如何在USS命令中指定MVS数据集的参考cat.

我在本地系统上尝试了这个,它使用了这个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文件名的实用程序有限.IBM的这篇文章概述了支持的实用程序.

不幸的是,sed不在列表中

以下实用程序支持使用MVS™文件名.

有关限制和例外,请参阅每个实用程序的说明:
- automount
- c89
- cp
- mv
- pax
- 不支持使用DSNTYPE = LARGE定义的 tar
MVS数据集.

本节讨论在USS中访问MVS文件