为了使用来自发布者软件的数据,我可以通过CLI(Linux Shell)调用一些函数。
其中一个返回数据给我,格式如下:
2601424 OPTDCBO3 EERP O 0254 5512240 TDCTAC01 B 00 0000000 N N
2602451 WHA EERP O 0254 5512353 03ZEE003 B 00 0000000 N N
2602748 OPTDCBO4 EERP O 0254 5512380 TDCTAC01 B 00 0000000 N N
2603290 OPTDCBO3 EERP O 0254 5512440 TDCTAC01 B 00 0000000 N N
2604594 OPTDCBO3 EERP O 0254 5512560 TDCTAC01 B 00 0000000 N N
2605631 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605627-EDR 00 0000000 N N
2605657 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605652-EDR 00 0000000 N N
2605663 OP49LDB1 TRAN O 0254 EDRZZZ02 B 2605653-EDR 00 0000000 N N
2606116 OPTDCBO3 EERP O 0254 5513080 TDCTAC01 B 00 0000000 N N
2716077 OPTDCBO3 EERP O 0255 5610080 TDCTAC01 B 00 0000000 N N
2716564 SOG01 TRAN O 0255 s2716564 TACSOG01 B 2716504-TAC 00 0000000 N N
2718631 OPTDCBO3 EERP O 0255 5610160 TDCTAC01 B 00 0000000 N N
7158273 OPTDCBO4 EERP O 0251 5203300 TDCTAC01 B 00 0000000 N N
7158672 WHA EERP O 0251 5203342 03ZEE001 B 00 0000000 N N
7158939 ZZZA4 LIST O 0251 B 7158938-49W 00 0000000 N N
7158978 OPTDCBO3 EERP O 0251 5203400 TDCTAC01 B 00 0000000 N N
7159853 OPTDCBO4 EERP O 0251 5203540 TDCTAC01 B 00 0000000 N N
2724704 SOU02 TRAN I 0255 s2724704 FTP_B E 2724704-SOU 00 0000000 N N
2724707 PRODS2I EERP O 0255 6219255 S2IRCE03 E 00 0000000 N N
2724708 SOU01 TRAN I 0255 s2724708 FTP_B E 2724708-SOU 00 0000001 N N
2724709 SON01 TRAN O 0255 s2724709 SOUSON11 E 2724708-SOU 00 0000001 N N
一个空格分隔前5列,一个或两个空格分隔第5列和第6列。第6和第7栏有时是空的。
其目的是在一个分隔的文本文件中返回部分或全部数据,每个字段之间用逗号分隔。
要检索第1列和第7列,我使用:用途:
command | awk -F" " '{ print $1,$7 }'
但它给出:
2603290 TDCTAC01
2604594 TDCTAC01
2605631 B
2605657 B
2605663 B
2606116 TDCTAC01
2606214 TDCTAC01
7158672 03ZEE001
7158939 7158938-49W
7158978 TDCTAC01
Awk将填充空格的列视为大量相邻分隔符,而不是空列,因此返回下一个非空列的数据。
当有时两列之间有两个空格时,如何将一个超过X个空格的序列视为空列?
列N°6可以由1到6个数字字符组成,因此不能简单地使用固定宽度来分隔列。
1条答案
按热度按时间ax6ht2ek1#
wrt
Column N°6 can be composed of 1 to 6 numeric characters, so you cannot simply use a fixed width to delimit the column.
-当然可以。该列的宽度固定为8个字符(或9个字符以延迟包括分隔符空间)-使用该宽度并修剪前导/尾随白色空间(gsub(/^ +| +/,"",$6)
)以保留您感兴趣的值。以下是如何使用GNU awk for
FIELDWIDTHS
识别所有字段(使用其他awk,您需要一个while(substr())
循环):举例来说:
.