Sed 外壳中的字段分隔符

Sed 外壳中的字段分隔符,sed,tr,Sed,Tr,我的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

我的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 "
我希望所有文件都用|分隔,并且所有数字都应该是简单的。 不,是一个数字

我希望输出像:

Apartments| 891 | 413 | 1623 | 2415 |6565 | 2916 | -  | 436 | -  | 620 |
在这里,使用和命令可以很容易地实现它,如下所示

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

$ sed -e 's/\(\"[^",]\+\),\([^",]*\)/\1\2/g' -e 's/\"//g' sample.csv |tr ',' '|'
首先
sed
删除两个引号之间的逗号,然后
tr
命令用管道替换所有剩余的逗号

输出:

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