2014-03-26 123 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中的代碼不是用於生成示例輸出的代碼。

相關問題