【发布时间】:2015-02-07 20:38:59
【问题描述】:
我有一个输入文件。 我需要扫描第 3 列中第 1 列和第 2 列的值/数字,如果匹配打印 $1 和 $2 与相应的 $4,输出如下所示。 任何帮助表示赞赏。
为了匹配 $3 中的第一列,尝试了这段代码,但没有成功。 逻辑是将 $3 放入一个数组并在其中扫描 $1。
awk -F ',' '{a[$3] } { if ($1 in a) {print $1":" $4 } else {print $1, "NA"} }' 1.csv
输入
345,1314,567,index-1
344,1315,566,index-2
343,1316,565,index-3
342,1317,1316,index-4
241,1318,563,index-5
340,1319,562,index-6
439,1320,561,index-7
318,1333,337,index-8
337,1335,559,index-9
236,1336,558,index-10
,,311,index-11
,,1314,index-12
,,1333,index-13
,,3444,index-14
,,344,index-15
,,2008,index-16
,,342,index-17
,,1320,index-18
,,543,index-19
,,340,index-20
,,12233,index-21
输出
345:#N/A
344:index-15
343:#N/A
342:index-17
241:#N/A
340:index-20
439:#N/A
318:#N/A
337:index-8
236:#N/A
1314:index-12
1315:#N/A
1316:index-4
1317:#N/A
1318:#N/A
1319:#N/A
1320:index-18
1333:index-13
1335:#N/A
1336:#N/A
【问题讨论】:
-
您的文字和您的示例不一致。请说明你想要什么,并展示你到目前为止所做的尝试。
-
对不起,解释的混乱,示例输入和输出是有效的。我试图在开始时匹配第一列,但仍然需要很大的帮助。awk -F ',' '{a[$3] } { if ($1 in a) {print $1 $4 ":"} else {print $1, "NA"} }' 1.csv
-
你试过什么?当您不包含代码时,很难帮助您编写代码。 Put it in your question,不仅仅是评论。