如何使用sed删除csv文件中的换行符

时间:2014-12-16 06:42:27

标签: linux sed

我有一个csv数据文件,其中的数据采用以下结构:

abc^"a detail explaination"^cde^"another detail explaination"^date

然而,由于用户输入,一些细节输入了换行符,并且打破了程序。我需要在双引号"

之间删除这些换行符

我尝试使用sed命令,但它没有改变它,我尝试的命令是:

sed -e :1 -e 's@\(".*\)\n\(.*"\)@\1\\2@;t1' file.csv > file_changed.csv

我正在尝试做的标准是替换封装在2个双引号之间的换行符\n,因为这是csv的格式。

任何人都知道我的sed命令有什么问题?或者还有其他更好的方法来实现这一目标吗?

修改

附加说明,我无法删除所有换行符,因为我需要将它们保留在行尾,因为这是一个用于导入目的的csv文件。只需要删除那些封装在双引号中的内容

2 个答案:

答案 0 :(得分:1)

sed ':cycle^J/^\([^"]*"[^"]*"\)*[^"]*"[^"]*$/ {N;s/\n//;b cycle^J}' file.csv > file_changed.csv

在具有任意数量的打开和关闭" + 1 "的每一行上,添加下一行,删除换行并重新测试。 打印生成的行并转到下一个

答案 1 :(得分:-1)

如果足够,您可以使用:tr -d '\n'删除所有\n