0

我正在尝试编写一个 bash 脚本来导入 CSV 文件并将其发送到网络上的某个地方。如果我使用手写的 CSV,即:

summary,description
CommaTicket1,"Description, with a comma"
QuoteTicket2,"Description ""with quotes"""
CommaAndQuoteTicke3,"Description, with a commas, ""and quotes"""
DoubleCommaTicket4,"Description, with, another comma"
DoubleQuoteTicket5,"Description ""with"" double ""quoty quotes"""

READ 命令能够很好地读取文件。但是,如果我在 Excel 中创建“相同的文件”(即:具有相同的字段),则 READ 无法正常工作,通常只读取第一个值,仅此而已。

在相对较新的 Bash 脚本中,所以如果有人认为我的代码有问题,我会上传它,但它似乎是 Excel for Mac 保存文件的方式有问题,我想有人可能对此有一些想法。

你们可以贡献的任何东西都将不胜感激。干杯!

4

1 回答 1

3

默认情况下,Mac 上的 Excel 使用回车符指示新记录,但 bash 使用换行符查找记录。在 Excel for Mac 中保存文件时,请务必将字符编码(保存文件时可用的选项)更改为 DOS 或 Windows 等,其中应弹出回车符和换行符,并且应是“可读的”。

或者,您可以只使用 处理文件tr,并将所有 CR 转换为 LF,即

tr '\r' '\n' < myfile.csv > newfile.csv

您可以验证这是否确实是问题的一种方法是使用od检查文件。使用类似的东西:

od -c myfile.csv

并寻找行尾字符。

最后,您还可以调查 bash 的内部IFS变量,并将其设置为在其中包含“\r”。见:http ://tldp.org/LDP/abs/html/internalvariables.html

于 2012-08-20T03:18:48.330 回答