【发布时间】:2016-10-14 13:46:00
【问题描述】:
我有一个文件(excel 文件),其中包含一些列(不固定,动态更改),我需要获取几个特定列的值。我可以使用一个 awk 命令获取列,然后使用这些列号将行打印到另一个 awk 命令中。有什么办法可以合二为一吗?
awk -F',' ' {for(i=1;i < 9;i++) {if($i ~ /CLIENT_ID/) {print i}}} {for(s=1;s < 2;s++) {if($s ~ /SEC_DESC/) {print s}}} ' <file.csv> | awk -F "," '!($5~/...[0-9]L/ && $21~/FUT /) {print $0}' <file.csv>
将列 (client_idandsec_desc`) 输出为 5 和 9,这是它们的列号(这会随着不同的文件而变化)。
现在使用此列号,我得到所需的输出如下:
awk -F "," '!($5~/...[0-9]L/ && $21~/FUT /) {print $0}' <file.csv>
如何将这些组合成一个命令?将变量从第一个传递到第二个?
输入(csv文件有各种动态列,对以下两列感兴趣)
CLIENT_ID SEC_DESC
USZ256 FUT DEC 16 U.S.
USZ256L FUT DEC 16 U.S. BONDS
WNZ256 FUT DEC 16 CBX
WNZ256L FUT DEC 16 CBX BONDS
输出给我行- 2 和 4 与我在第二个 awk 命令中的正则表达式模式匹配(列号为 5 和 21)。这些列号根据文件更改,因此首先必须使用第一个 awl 获取列号,然后将其作为输入提供给第二个 awk。
【问题讨论】:
-
您能发布示例输入和所需的输出吗?
-
CLIENT_ID | SEC_DESC US456 | FUT 12 月 16 日美国 US546L | FUT 12 月 16 日美国债券 WN546 | FUT 12 月 16 日 CBX WN546L | FUT DEC 16 CBX T-BONDS 这是 csv 文件的一部分
-
请编辑您的问题以包含输入和输出
-
编辑了输入/输出等问题