【发布时间】:2014-05-05 11:41:18
【问题描述】:
也许这个问题没有正确提出>这是我在 stackoverflow 上的第一篇文章。
我创建了一个如下所示的文件:并从终端将其作为 shell 运行
#!/bin/sh
in2csv -f xls "A1.csv" > "export/A1.csv" |
in2csv -f xls "Allison am sch..XLS" > "export/Allison am sch..csv" |
in2csv -f xls "B & C Rmap am sch.XLS" > "export/B & C Rmap am sch.csv" |
in2csv -f xls "BOW K's am sch.XLS" > "export/BOW K's am sch.csv" |
cat *.csv > all.csv
因为没有一种工具可以做到这一点。我可以从将创建 shell 文件的终端构建文本文件吗?
first ls > files.txt # 列出我想在前后添加文本的所有文件: 在前面 in2csv -f xls " 文件名放在这里 后面" > "export/Allison am sch..csv" | 一旦我拥有了所有这些,我就可以简单地运行一个 sh 命令。
或者有没有更好的方法。无需使用另一个具有大量依赖项的程序来管理?谢谢 我想知道如何使用 unix(终端)将 .xls 转换为 csv 的目录中的所有文件。我可以做到,但想知道更好的方法。我的步骤是
ls > files.txt
然后将 txt 文件导入 SAS,我在文件中添加文本以使用 csvkit 进行转换:SAS 代码如下所示,其中 VAR1 是 xls 文件名称的文本。
data names2;
set names;
example VAR1 = "Lakota Trade ctr am sch.XLS"
有很多这样的文件:这是 SAS 代码:
data file;
set file;
f = "in2csv -f xls " || '"'|| strip(VAR1) || '"'|| " > " || '"'||strip(tranwrd(VAR1, "XLS", "csv"))||'"';
drop var1;
run;
然后我可以将每一行复制到终端并让csvkit:in2csv 进行转换。我不想使用 SAS 的本机导入进行转换。我想知道如何完全在 unix 终端甚至 Perl 中做这样的事情。
【问题讨论】:
-
你不能这样做,你必须使用非 unix 工具。
-
这个SO问题中描述了几种方法:Convert xlsx to csv in linux command line
-
似乎你只需要在你的脚本(你提到的第一个文件)中有一个 for 循环,它将为目录中的每个文件运行你的命令。它需要解析文件名的尾随“.XLS”或“.csv”部分。不清楚这就是你想要的,所以我不会尝试回答。