1

我有一个 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 等会额外增加。

4

1 回答 1

3

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

而不是这里的正则表达式匹配:

if ($0 ~ i)

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

if ($0 == i)
于 2013-09-06T12:14:58.247 回答