首页 > 解决方案 > 将终端的输出重定向到 .csv 文件中的特定工作表

问题描述

我想将终端的一些输出重定向到电子表格中的工作表。这在bash中可能吗?

具体来说,我生成了一些显示在终端中的输出。我设法将此输出重定向到 .csv 文件中的工作表,如下所示:

COMMAND awk '{print $1,$2}' > FILE.csv

$1,$2终端输出的第 1 列和第 2 列重定向到 FILE.csv 中的工作表。

a)是否可以指定输出重定向到哪个工作表?也就是说,如何修改上述命令,以便将输出重定向到 FILE.csv 的第 25 页?

b)$表示要输出到 .csv 文件的终端输出的列。仅将第 1 列第 2 行输出到 .csv 文件的语法是什么?

编辑

终端输出的形式为

X1, Y1 X2, Y2 ...

由大约 1000 行组成,我想将Xi值复制到 .csv 文件中的 B 列,并将值复制Yi到 C 列。

我有很多这样的输出都是单独生成的,所以总的来说,我希望它们在一个 .csv 文件中彼此相邻。也就是说,上面的输出可以进入B列和C列,然后另一个这样的输出可以进入D列和E列等等......

标签: bashcsvredirectterminaloutput

解决方案


在 Linux 中,您可以使用paste实现此目的:

paste -d "," <(COMMAND1 | awk '{print $1","$2}') \
  <(COMMAND2 | awk '{print $1","$2}') \
  (more COMMANDs...) \
> FILE.csv

当然,这仅在所有命令输出相同数量的行时才有效。

如果不是这种情况,您可以使用join按匹配的标识符列合并文件。


推荐阅读