2014-03-27 80 views
1

我有一個.csv文件與一些地址和管理代碼。我想在最後一列(英國郵政編碼)上進行分類。我試圖通過將最後一列移到開頭然後使用sort來重新排序文件,但我遇到了一個奇怪的問題。 這裏有一些數據:

$ head T201311ADDR\ BNFT.CSV 
201311,A81001,THE DENSHAM SURGERY      ,THE HEALTH CENTRE  ,LAWSON STREET   ,STOCKTON     ,CLEVELAND    ,TS18 1HU 
201311,A81002,QUEENS PARK MEDICAL CENTRE    ,QUEENS PARK MEDICAL CTR ,FARRER STREET   ,STOCKTON ON TEES   ,CLEVELAND    ,TS18 2AW 
201311,A81003,THE GALLAGHER PRACTICE     ,THE HEALTH CENTRE  ,VICTORIA ROAD   ,HARTLEPOOL    ,CLEVELAND    ,TS26 8DB 
201311,A81004,WOODLANDS ROAD SURGERY     ,6 WOODLANDS ROAD   ,       ,MIDDLESBROUGH   ,CLEVELAND    ,TS1 3BE 
201311,A81005,SPRINGWOOD SURGERY      ,SPRINGWOOD SURGERY  ,RECTORY LANE    ,GUISBOROUGH    ,       ,TS14 7DJ 

我能得到的最後一列:

$ head T201311ADDR\ BNFT.CSV | awk -F ',' 'BEGIN {OFS = ","} {print $NF}' 
TS18 1HU 
TS18 2AW 
TS26 8DB 
TS1 3BE 
TS14 7DJ 

但是,如果我打印任何東西就行了,它會覆蓋它。

$ head T201311ADDR\ BNFT.CSV | awk -F ',' 'BEGIN {OFS = ","} {print $NF, $2}' 
,A81001U 
,A81002W 
,A81003B 
,A81004 
,A81005J 
,A81006T 
,A81007W 
,A81008 
,A81009 
,A81011W 

顯然沒有用。我試過使用我剛剛編輯過的測試文件,但沒有看到這種行爲,所以它與這個特定的文件有關。有什麼建議麼?有一些換行符存在已知問題嗎?我正在使用Mac,我懷疑這個文件來自PC。這是來自英國的NHS數據。

+0

你有你的關閉和開啓之間的寄生分號牙套...... –

+0

您的文件中可能存在一些怪異(Windows式)字符,嘗試「貓-vet你的文件「並尋找^ M。 –

+1

你可以用'tr'去除任何奇怪的字符。要刪除回車(\ r)做「tr -d'\ r'< inputfile > outputfile」 –

回答

2

您的文件中可能存在一些怪異(Windows式)字符,試試這個:

cat -vet yourfile 

,並查找^ M是怎麼回車出現的回報。這裏有一個例子:

cat -vet file 
I came from Windows-world ^M$ 
so did I ^M$ 

或者,如果你只需要,或喜歡,sed

sed -ne "l" file 
I came from Windows-world \r$ 
so did I \r$ 

您可以刪除任何奇怪的字符tr。要刪除回車(\ r)的做到這一點:

tr -d '\r' <inputfile> outputfile