【发布时间】:2011-04-06 11:30:06
【问题描述】:
我有一个文件 (lookup.txt),其中包含一个查找表,其中包含一个正则表达式列表以及相应的数据(类别和句点)。例如
INTERNODE|household/bills/broadband|monthly
ORIGIN ENERGY|household/bills/electricity|quarterly
TELSTRA.*BILL|household/bills/phone|quarterly
OPTUS|household/bills/mobile|quarterly
SKYPE|household/bills/skype|non-periodic
我有另一个文件(data.txt),其中包含费用清单,例如:
2009-10-31,cc,-39.9,INTERNODE BROADBAND
2009-10-31,cc,-50,ORIGIN ENERGY 543546
2009-10-31,cc,-68,INTERNODE BROADBAND EXCESS CHARGES
2009-10-31,cc,-90,TELSTRA MOBILE BILL
2009-11-02,cc,-320,TELSTRA HOME BILL
2009-11-03,cc,-22.96,DICK SMITH
2009-11-03,cc,-251.24,BUNNINGS
2009-11-04,cc,-4.2,7-ELEVEN
我想将这两者结合在一起,从而使 data.txt 文件中的第 4 列与 lookup.txt 文件中第一列的正则表达式相匹配。
所以输出将是:
2009-10-31,cc,-39.9,INTERNODE BROADBAND,household/bills/broadband,monthly
2009-10-31,cc,-50,ORIGIN ENERGY 543546,household/bills/electricity,quarterly
2009-10-31,cc,-68,INTERNODE BROADBAND EXCESS CHARGES,household/bills/broadband,monthly
2009-10-31,cc,-90,TELSTRA MOBILE BILL,household/bills/phone,quarterly
2009-11-02,cc,-320,TELSTRA HOME BILL,household/bills/phone,quarterly
2009-11-03,cc,-22.96,DICK SMITH
2009-11-03,cc,-251.24,BUNNINGS
2009-11-04,cc,-4.2,7-ELEVEN
我已经使用 bash 循环、循环查找、执行 greps 并在使用 sed 时添加额外的列来实现这一点,但它非常慢。所以想知道是否有更快的方法来做到这一点,比如使用 awk。
任何帮助将不胜感激。
【问题讨论】: