如何在Linux上使用不同的工作表创建CSV文件

时间:2014-11-02 09:47:00

标签: linux bash csv awk sed

在Linux上轻松创建CSV文件:

   echo names,OBAMA,PUTIN,KAMERUN > NAMES.csv

它将创建CSV文件(表1)

但是可以在CSV文件中创建第二张或第三张或更多张纸吗?

例如(我想现在创建第二张表2)

   echo best_air_force,USA,RUSSIA,ENGLAND > NAMES.csv

备注 - 我在我的linux机器上使用bash脚本

2 个答案:

答案 0 :(得分:6)

你不能。 CSV文件格式不支持多张图纸。

答案 1 :(得分:1)

答案取决于您将使用什么工具将文件显示/编辑为单独的工作表。例如,您可以创建一个CSV文件,如:

a,b,c
-
d,e,f

然后您可以使用这样的脚本(GNU awk用于多字符RS):

awk -v sheet=<number> -v RS='(^|\n)-\n|\n$' 'NR==sheet' file

选择工作表:

$ awk -v sheet=1 -v RS='(^|\n)-\n|\n$' 'NR==sheet' file
a,b,c
$ awk -v sheet=2 -v RS='(^|\n)-\n|\n$' 'NR==sheet' file
d,e,f

由于“CSV”没有一个规格,你仍然可以说这是“CSV”,但在这种情况下,我会将你用来查看它的工具命名为单独的工作表,例如“foo”并使用“.foo” “而不是”csv“作为后缀。就像MS使用“Excel”和“.xls”一样。

你可以使用你喜欢的任何字符序列和你所说的字段来表示单张分隔符,例如:

-,-,-

<control-char>,<control-char>,<control-char>
END OF SHEET

上面的第二个是空白行。关键是分离成纸张只在您用于显示/编辑这些纸张的任何工具的上下文中有意义,并且您完全控制分隔符是什么,因为您将编写使用它的工具。它只需要是一些你知道不能在文件的其余部分自然出现的字符串。