2014-03-26 88 views
3

我有以下的列中的两个的CSV文件:比较两个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在最后一栏。

+0

对不起,我编辑它。问题是最后一列被切断为第一个数字/单词。例如,假设1小时停车将被切断为1. – masterqp

+2

@masterqp你的命令不应该产生你所显示的输出。你正在打印'$ 1',所以输出应该显示'-73.90479333'。如果你打印$ 0,你应该得到整条生产线。我们缺少什么? –

+0

哦,谢谢你的工作。我不确定为什么1美元给出了它的结果。你是对的,它应该只给第一列。 – masterqp

回答

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中的代码不是用于生成示例输出的代码。

相关问题