比较两个csv文件中的列并将结果写入第三个

时间:2014-03-26 21:05:38

标签: unix awk

我有两个csv文件,其中包含以下列:

alternate.csv:

Q P-003430 NO HOUR PARKING 8AM-10PM EXCEPT SUNDAY 

csvtest.csv:

-73.90479333 40.70043234 5597032 P-003430 1010648.808 194477.1977 NO HOUR PARKING 8AM-10PM EXCEPT SUNDAY

我用过

awk 'NR==FNR{a[$2];next}$4 in a{print $1}' alternate.csv csvtest.csv >result.csv

为了比较列并获得我想要的结果。但是,最后一列NO HOUR PARKING 8AM-10PM EXCEPT SUNDAY在最后一列中被切断为NO

例如result.csv出现为:

-73.90479333 40.70043234 5597032 P-003430 1010648.808 194477.1977 NO 

有没有办法改变这一点,所以我可以在最后一栏保留整个短语NO HOUR PARKING 8AM-10PM EXCEPT SUNDAY

1 个答案:

答案 0 :(得分:3)

从评论中承认,文件的实际格式以及OP实际尝试的格式存在不确定性,表面问题的明显解决方法是:

$ awk 'NR == FNR { a[$2]; next } $4 in a' alternate.csv csvtest.csv
-73.90479333 40.70043234 5597032 P-003430 1010648.808 194477.1977 NO HOUR PARKING 8AM-10PM EXCEPT SUNDAY

这可能无法解决问题,因为文件显然不是CSV格式,OP中的代码不是用于生成示例输出的代码。