如何使用 SORT 将空行移动到文件末尾?

Posted

技术标签:

【中文标题】如何使用 SORT 将空行移动到文件末尾?【英文标题】:How to use SORT to move blank lines to the end of the file? 【发布时间】:2011-07-29 04:55:08 【问题描述】:

我有 9787 条记录,其中前 17 行是空白的。我想将这 17 行移到文件末尾。 我该怎么做?

【问题讨论】:

您是否只想将空行放在末尾,其余的按原始顺序保留?记录在什么类型的数据集中?您可以访问哪个排序程序? 是的,记录位于 PS 中。我只能访问 DFSORT 【参考方案1】:

下面将用SORTOUT DD末尾的空行对输入数据集进行排序

//SORT EXEC PGM=SORT //SYSOUT DD SYSOUT=* //SORTWK01 DD SPACE=(CYL,(10,5),RLSE) //SORTWK02 DD SPACE=(CYL,(10,5),RLSE) //SORTWK03 DD SPACE=(CYL,(10,5),RLSE) //排序 DD DSN=INPUT.DATASET,DISP=SHR //SORTOUT DD SYSOUT=* //SYSIN DD * 排序字段=(1,80,CH,D) //*

FIELDS=(1,80,CH,D) 表示使用字符数据从位置 1 降序排列 80 个字符。 如果您的数据集超过 80 个字符,您可能需要在此处输入实际宽度,否则可能不会将空行放在末尾。

【讨论】:

@cruzcarrol,如果你觉得答案有帮助,你应该点击向上箭头来投票,如果它解决了你的问题,点击复选标记接受它 - ***.com/faq#howtoask【参考方案2】:

无需对数据进行排序。幸运的是,数据行 1) 按整个记录的顺序排列,2) 按 降序 顺序 :-)。

这通过在每条记录的“末尾”添加一个序列号来临时扩展每条记录(五位数应该允许扩展)。使用 OUTFIL OMIT,来自数据的前 17 条记录的空白行将被删除。使用 TRAILER1 和“斜杠运算符”“/”,将 17 个空行添加到文件的“末尾”。 REMOVECC 是因为不需要 TRAILER1(报告功能)否则会添加的打印机控制字符。 OUTFIL 上的 BUILD 是将记录恢复到原来的大小,去掉 5 位序列号。

OPTION COPY 

INREC IFTHEN=(WHEN=INIT,OVERLAY=(81:SEQNUM,5,ZD))

OUTFIL OMIT=((1,80,CH,EQ,C' ', 
           AND,81,5,ZD,LE,17)), 
       BUILD=(1,80), 
       REMOVECC, 
       TRAILER1=(/,/,/,/,/,/,/,/,/,/,/,/,/,/,/,/)

【讨论】:

以上是关于如何使用 SORT 将空行移动到文件末尾?的主要内容,如果未能解决你的问题,请参考以下文章

Dragula:如何始终将项目移动到列表末尾

如何将光标移动到内容可编辑实体的末尾

将空行插入或追加到 numpy 数组

如何去掉linux配置文件的注释行和空行

Gtk TextView - 将光标放置或移动到文本末尾?

你能强制 Vim 在文件末尾显示一个空行吗?