AWK从一个文件中提取相对于另一个文件的数据

时间:2013-09-06 12:11:26

标签: bash csv sed awk

我有一个awk脚本,通过在另一个文件中可用的模式中的模式匹配来提取数据。 在运行脚本时我得到了一些其他模式,有没有办法更新这个awk命令,以便它只能看到确切的模式。

awk 'NR==FNR{a[$0]=1;next} {for (i in a) if ($0 ~ i) {print; break}}' /cygdrive/c/KPI/test/test.csv /cygdrive/c/KPI/test/raw/SCCP_ADMIN_FINAL.csv | awk -F"," '{math[($2)]+=$3}END{for (i in math) {print i,math[i]}}'|sort

AINGO 253694944
ARL 67932655
BPL 65466640
CELCO 52181696
CINGU 1147311508
CMM 181063417
CNG 2128485188
CONEC 2434
DNFPM 84467207
ERP 286990079
ETC 45013333
GWLES 111261691
HUM 283010928
IDEAC 143610898
INPHM 210392395
LONES 5
MAN 176941298
MEA 48457597
MONET 335
MOROM 105092112
MOSSL 175407690
ONE 554898379
PTTSA 81164497
RPG 63771906
SPNEP 148860282
TATAS 59847841
TTETC 969
WATAN 187799790
WND 222047363

文件/cygdrive/c/KPI/test/test.csv:

cat /cygdrive/c/KPI/test/test.csv
CNG
WND
HUM
AINGO
IDEAC
MOSSL
INPHM
CMM
MAN
MEA
BPL
ERP
DNFPM
SPNEP
GWLES
ETC
CINGU
ARL
RPG
MOROM
PTTSA
ONE
CELCO
TATAS
WATAN

有25个名字,但是在awk输出中我得到了29的日期,所以在结果中,conec,lonec等都是额外的。

1 个答案:

答案 0 :(得分:3)

完全匹配避免正则表达式,即

而不是正则表达式匹配:

if ($0 ~ i)

使用相等进行比较,如下所示:

if ($0 == i)