实际数据流的固定宽度记录,但具有以下 awk 字段分割(FS、FIELDWIDTHS、FPAT)

问题描述 投票:0回答:1

我改变了我的问题 - 非常简单
如何用 awk 读出这些数据? 知道-
一条记录大小为 29 个字符
每条记录 3 个字段 - 大小:15、10、4

可以使用awk的字段分割(FIELDWIDTHS)来完成吗? 数据大约2MB长:

4harddisk-------412999238---13cdrom-------------488388---22floppy-----------4994942---31mouse-----------20303202---4
awk
1个回答
0
投票

使用 awk 阅读本文,我也失败了,因为记录的定义(来自手册页):

记录 通常,记录由换行符分隔。您可以通过指定值来控制记录的分隔方式 内置变量RS。如果 RS 是任何单个字符,则该字符分隔记录。否则,RS 就是一个常规的 ex- 压力。输入中与此正则表达式匹配的文本分隔记录。不过在兼容模式下, 仅其字符串值的第一个字符用于分隔记录。如果 RS 设置为空字符串,则记录 由空行分隔。当 RS 设置为空字符串时,换行符始终充当字段分隔符, 除了 FS 可能具有的任何价值之外。

要解决此问题,您可以尝试先将长文本拆分为记录:

sed -e 's/\(.\{29\}\)/\1\n/g' input

然后你可以使用 gawk,使用 FIELDWIDTHS

© www.soinside.com 2019 - 2024. All rights reserved.