gpt4 book ai didi

linux - Kshell 读取文件并定义记录长度,然后从每条记录的末尾去除 ascii 20 个字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:16 24 4
gpt4 key购买 nike

我正在将文件从 OpenVMS 服务器传输到 Unix 服务器,有一个 VMS 程序逐条记录地读取该文件,定义记录长度为 320,然后从中删除所有 ASCII 20 字符每条记录结束。我如何使用 KSH 脚本执行此操作?

我只是想逐条记录地读取一个文件,从每条记录中的位置 320 剥离所有 ascii 20 字符,回到有实际好字符的地方(记录的真正结尾),然后将其写到一个新的文件。

提前致谢!

编辑:我在 AIX 6 上

最佳答案

你可以使用 sed:

sed -i -r 's/(.{319})\x14(.*)$/\1\2/' file

此命令将首先读取 319 个字符,然后是 \x14 (ASCII 20),然后是该行的其余部分。然后它将放回匹配组#1 和匹配组#2。这将遗漏\x20

sed 的

-i 标志(内联)将保存更改的文件。

编辑:在 AIX 上尝试这个 sed:

sed 's/\(.\{319\}\)'$'\x14''\(.*\)$/\1\2/' file > _temp && mv _temp file

最终解决方案:经过调查(见评论)后发现文件有尾随空格(十六进制 20)而不是 ASCII 20。一旦建立,以下解决方案就起作用了:

sed 's/ *$//' file > _temp && mv _temp file

关于linux - Kshell 读取文件并定义记录长度,然后从每条记录的末尾去除 ascii 20 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17976395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com