2015-10-21 36 views
1

我有CSV文件一樣,可造成:場分體殼

Apartments, 891 , 413 ," 1,623 "," 2,415 "," 6,565 "," 2,916 ", - , 436 , - , 620 ," 1,651 "," 2,050 "," 1,200 "," 3,073 ", 89 , - , 24 ," 3,189 ", - ," 3,2 18 "," 1,768 ", 580 , - ," 1,107 "," 9,298 "," 9,178 "," 7,326 "," 3,356 "," 4,181 "," 2,912 "," 8,669 "," 2,584 "," 3,835 ", 901 ," 6,703 "," 7,150 "," 3,938 ","  13,867 "," 2,233 "," 6,839 "," 4,754 "," 6,594 ", - ," 2,582 "," 2,359 ", 624 , 416 , - ," 1,362 ", 280 ," 1,548 ", 595 ," 1,744 ", - , 481 ," 1,285 "," 3,07 7 "," 3,734 "," 2,339 "," 2,220 "," 1,053 ", 632 ," 8,898 ", 539 , - ," 4,355 " 

我希望所有的Fileds由被分隔|所有的數字都應該很清楚。 不,在一些數字。

我要像輸出:

Apartments| 891 | 413 | 1623 | 2415 |6565 | 2916 | - | 436 | - | 620 | 

請幫助。

回答

1

在這裏,使用命令可以輕鬆實現它,如下所示;

sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1\2/g' -e 's/\"//g' sample |tr ',' '|' 

說明:

sed首先除去逗號兩段引文之間,然後tr命令與管更換所有其餘逗號。

輸出:

$ sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1\2/g' -e 's/\"//g' sample.csv |tr ',' '|' 

Apartments| 891 | 413 | 1623 | 2415 | 6565 | 2916 | - | 436 | - | 620 | 1651 | 2050 | 1200 | 3073 | 89 | - | 24 
    | 3189 | - | 32 18 | 1768 | 580 | - | 1107 | 9298 | 9178 | 7326 | 3356 | 4181 | 2912 | 8669 | 2584 | 3835 | 901 
    | 6703 | 7150 | 3938 |  13867 | 2233 | 6839 | 4754 | 6594 | - | 2582 | 2359 | 624 | 416 | - | 1362 | 280 | 154 
    8 | 595 | 1744 | - | 481 | 1285 | 307 7 | 3734 | 2339 | 2220 | 1053 | 632 | 8898 | 539 | - | 4355