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

时间:2018-11-08 15:43:11

标签: unix sed mainframe

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

sed -n '1,10p' mainframeFile 

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

1 个答案:

答案 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

的访问