Sed 外壳中的字段分隔符
我的csv文件如下: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
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 ',' '|'