这是你的问题:
ssconvert -O’ separator =; quoting-mode = never’“f.ods”“f.txt”;
通过阻止ssconvert在必要时引用,你在这里拍摄自己的脚,你的问题不仅限于换行.例如,此电子表格:
example.ods
由ssconvert命令转换为:
example.txt文件
A1;B1;C1
A2;XX;B2
YY;C2
祝你好运.
而不是试图在转换之后撤消混乱(这将无法可靠地执行),或者在转换之前以某种方式预处理源ODS文件(这是疯狂的 – 如果您转换为CSV,则可能是因为您为了避免弄乱ODS文档,你需要使用没有这种基本缺陷的CSV方言.
这意味着您需要引用您的数据.事实证明,ssconvert不够智能,无法在默认设置中引用包含分隔符的单元格:
$ssconvert -O 'separator=;' example.ods example-2.txt
$cat example-2.txt
A1;B1;C1
A2;XX;"B2
YY";C2
……所以你需要引用一切:
$ssconvert -O 'separator=; quoting-mode=always' example.ods example-3.txt
$cat example-3.txt
"A1";"B1";"C1"
"A2;XX";"B2
YY";"C2"
使用CSV没有可靠的解决方法;除了正确引用您的数据之外,您提出的任何解决方案都会在某些时候回来并咬你,因为不带引号的CSV从根本上被打破为数据格式.
重申:不要尝试在不带引号的CSV中解决这个基本缺陷.即使你认为你已经通过使用模糊的数据格式解决了你为自己创造的所有问题,但在某些时候,你没有预料到的情况会出现,你会在闲暇时悔改.