如何使用awk将索引添加到csv文件?例如,假设我有一个文件

data.txt

col1,col2,col3
a1,b1,c1
a2,b2,c2
a3,b3,c3

我想添加另一列,即索引.基本上,我想输出

,col1,col2,col3
0,a1,b1,c1
1,a2,b2,c2
2,a3,b3,c3

我试图使用awk '{for (i=1; i<=NF; i++) print $i}',但它似乎不工作的权利.最好的方法是在第一行加一个逗号,但在其余行加一个递增的数字和一个逗号?

推荐答案

您可以使用此awk溶液:

awk '{print (NR == 1 ? "" : NR-2) "," $0}' file

,col1,col2,col3
0,a1,b1,c1
1,a2,b2,c2
2,a3,b3,c3

Linux相关问答推荐

我想强调某些条件是否与Linux中的全部输出匹配

仅使用Find搜索32字符长的目录

Azure Linux B1s VM-Jenkins Sever已安装,但主页未打开

boost-iostreams 1.59 sparc-solaris 交叉编译失败

重命名具有相同前缀的文件对中最旧的文件

BASH:在curl输出的每一行添加前缀

jinja2.exceptions.TemplateSyntaxError:预期标记,,得到整数(支持十六进制,八进制和二进制整数文字)

使用 ansible 验证 firewalld 配置

为什么控制台不接受反向换行?

递归/详尽地将点插入字符串

将特定列转换为行

anon 对 pmap 意味着什么?

如何忽略 diff 命令中的一些差异?

在 Linux 下将 TCP 流量重定向到 UNIX 域套接字

Bash 变量:是否区分大小写?

如何在 UNIX 上的 $PATH 中转义冒号 (:)?

如何知道是否有足够的内存可以在 Linux 机器上部署新应用程序?

linux中netstat和ss的区别?

如何安排 tcpdump 在特定时间段内运行?

如何通过命令行识别特定的 Linux 风格?