【发布时间】:2015-04-20 03:43:47
【问题描述】:
我有一个包含大约 400 个 .txt 文件的文件夹,我需要将它们转换为 .csv。当我将它们批量重命名为 .csv 时,所有列都会被合并为一个。当我转换为 .xls 然后转换为 .csv 时,也会发生同样的事情,即使 .xls 中的列很好。如果我打开 .xls 文件并另存为 .csv,那很好,但这需要打开所有 400 个文件。
我正在从 mac 终端使用 sed。导航到终端中包含文件的文件夹后,这里有一些不起作用的代码:
对于 *.csv 中的文件;做 sed 's/[[:blank:]]+/,/g'
对于 *.csv 中的文件;执行 sed -e "s/ /,/g"
对于 *.csv 中的文件; do s/[[:space:]]/,/g
对于 *.csv 中的文件;做 sed 's/[[:space:]]{1,}/,/g'
任何关于如何将列结构恢复到 csv 文件的建议将不胜感激。这可能已经很明显了,但我是一个编码新手,所以请放轻松。谢谢!
编辑:这里是 xls 列的外观示例,以及它们在 csv 格式中的外观:
Dotsc.exe 2/12/15 1:17 PM 0 Nothing 1 Practice
此处用空格分隔的所有内容(除了 7 和 PM 之间的空格)都由文件中的列分隔。这是我将批处理重命名为 .csv 时的样子:
Dotsc.exe 2/12/15 1:17 PM 0 无 1 练习
列现在变成了空格,所有数据都在同一列中。希望能澄清一些事情。
【问题讨论】:
-
显示输入文件中的一些示例行。
-
不知道该怎么做,所以它会在我看来是怎样的,但想象一个典型的 Excel 文件,其中列分隔数据。 csv 文件包含所有数据,除了一列中的所有数据,因此不是用列分隔数据,而是用单个空格分隔数据。我认为我需要做的是用逗号替换这些空格,尽管我可能是错的。
-
“不知道该怎么做,所以你会觉得它对我来说是怎样的” 选择一些示例行并将它们复制并粘贴到问题中。然后用鼠标选择它们并选择代码
{}。这将按字面意思格式化它们。 -
告诉我们您发布的代码以何种方式“不起作用”。它是核心转储、产生语法错误、输出错误、没有输出还是其他什么?您列出的
sed命令不会将它们的输出写回原始文件,因为您没有给它们-i选项,这可能是它们“不起作用”的方式吗? -
约翰,感谢您的帮助,我刚刚编辑了这篇文章,希望能让它更清楚。 Ed,从绝对没有发生任何事情的意义上说,它不起作用。一个“>”作为终端的下一行出现,文件保持不变。还尝试了 *.csv 中的文件;执行 sed -i "s/ /,/g" 得到相同的结果。
标签: csv sed terminal multiple-columns xls