Reputation: 796
I have an awk script to extract data by pattermatching in one file wrt pattern available in another file. while running script i am getting some other patterns to, is there any way to update this awk command so that it will look only for exact patterns.
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
File /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
which has 25 names but in above awk output i am getting date for 29, so in result conec, lonec etc are coming extra.
Upvotes: 1
Views: 367
Reputation: 785721
For exact match avoid regex i.e.
Instead of regex match here:
if ($0 ~ i)
Use equality to compare, like this:
if ($0 == i)
Upvotes: 3