将索引列添加到CSV文件

Sha*_*ich 10 csv bash

我有一个大的逗号分隔文件(6GB),并希望添加一个索引列.我正在寻找Unix类型的解决方案以提高效率.我正在使用Mac.

我有这个:

V1  V2  V3
0.4625  0.9179  0.8384
0.9324  0.2486  0.1114 
0.6691  0.7813  0.6705
0.1935  0.3303  0.4336
Run Code Online (Sandbox Code Playgroud)

想得到这个:

ID  V1  V2  V3
1   0.4625  0.9179  0.8384
2   0.9324  0.2486  0.1114
3   0.6691  0.7813  0.6705
4   0.1935  0.3303  0.4336
Run Code Online (Sandbox Code Playgroud)

lar*_*sks 12

这可能会奏效:

awk -F'\t' -v OFS='\t' '
  NR == 1 {print "ID", $0; next}
  {print (NR-1), $0}
' input.csv > output.csv
Run Code Online (Sandbox Code Playgroud)

awk,NR变量是"到目前为止看到的输入记录的总数",这通常表示"当前行号".所以NR == 1第一行是我们如何匹配第一个记录并添加"ID"列标题,以及我们NR-1用作索引的其余行.

所述-F'\t'参数设置输入字段分隔符,并-vOFS='\t'设置输出字段分隔符.


Lon*_*Rob 5

由于原始帖子中没有指定任何技术,我很乐意在这里保持简单。

(如果您知道自己在做什么,所有花哨Vim/bash解决方案都可以)

  • 在您最喜欢的电子表格程序中打开 CSV 文件(我使用的是 LibreOffice,但 Excel 或本机 Mac 等效程序也可以)
  • 在 A 列左侧插入一列
  • 在单元格 A2(标题下的第一个单元格)中输入 1
  • 双击单元格右下角的斑点,如屏幕截图所示:

LibreOffice 魔法

最后一步将用等填充索引列。1,2,3...然后您可以再次将生成的电子表格另存为 CSV 文件。