用于清理csv的Sed命令不起作用

时间:2014-12-24 03:14:19

标签: bash csv hadoop sed

我想要一个CSV文件:

Replace all & instances with &
Remove the first (header) line
Change all semicolons to $$$
Change all "$$$" instances into ";"
Remove all " characters

执行此操作的sed命令如下所示:

 sed 's/\&/\&/g' BX-Book-Ratings:| sed -e '1d' |sed 's/;/$$$/g' | sed 's/"$$$"/";"/g' | sed 's/"//g' > corrected_rating

但是当我把它放在ClouderaVM的终端时它不起作用......

它给了我错误:sed: can't read BX-Book-Ratings:: No such file or directory

我在桌面和根文件夹上放了一份BX-Book-Ratings.csv,我尝试将直接位置放在sed命令中。我做错了什么?

我收到错误:line sed: -e expression #1, char 14: unknown option to s'`

2 个答案:

答案 0 :(得分:2)

如果文件名为BX-Book-Ratings.csv,则需要在命令行中使用该文件名而不是BX-Book-Ratings:。这不是sed错误,这是shell的问题。

答案 1 :(得分:0)

为什么要使用这么多管道?这种方法怎么样:

sed 's/\&amp\;/\&/g;1d;s/;/$$$/g;s/"$$$"/";"/g;s/"//g' BX-Book-Ratings.csv > corrected_rating

或者,如果您想将结果存储到变量,请执行以下操作:

var=$(sed 's/\&amp\;/\&/g;1d;s/;/$$$/g;s/"$$$"/";"/g;s/"//g' BX-Book-Ratings.csv)