我正在尝试通过“ sed”读取大型机文件,但无法读取。 该脚本是从大型机JCL调用的,因此内置了tcsh。
sed -n '1,10p' mainframeFile
无法读取,不会产生任何结果。
答案 0 :(得分:7)
当您引用大型机文件时,我假设您是指MVS文件而不是USS文件,因为为sed
指定了USS文件,就像其他任何文件一样。
sed
不能直接使用,您可以通过使用cat
并将其泵送到stdout和管道中来利用此技巧使其工作。阅读以下内容以获取有关MVS数据集和命令行实用程序的更多信息。它还提供了有关如何在诸如cat
之类的USS命令中指定MVS数据集的参考。
我在本地系统上尝试了此操作,并且可以使用此sed
命令。
cat "//'USER1.TEST.CNTL(JOBCARD)'"
//作业(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 不在列表中
以下实用程序支持使用MVS™文件名。
请咨询每个实用程序的说明以了解限制和例外:
-自动挂载
-c89
-cp
-mv
-pax
-焦油
不支持使用DSNTYPE = LARGE定义的MVS数据集。
本节讨论对MVS files in USS
的访问