【问题标题】:Add an index column to a csv using awk使用 awk 将索引列添加到 csv
【发布时间】:2022-07-07 00:45:54
【问题描述】:

如何使用 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}',但它似乎无法正常工作。为第一行添加逗号但在其余行中添加递增数字和逗号的最佳方法是什么?

【问题讨论】:

    标签: linux awk


    【解决方案1】:

    您可以使用这个awk 解决方案:

    awk '{print (NR == 1 ? "" : NR-2) "," $0}' file
    
    ,col1,col2,col3
    0,a1,b1,c1
    1,a2,b2,c2
    2,a3,b3,c3
    

    【讨论】:

    • 谢谢,这行得通。 NR-2 如何获得递增的数字?我知道剩下的更多是一个条件语句,如果它的第一行是空白的,但有点困惑 NR-2 的工作原理
    • 哦,它的行号,减 2.. 明白了,哈哈
    【解决方案2】:

    使用这个 Perl 单行代码:

    perl -pe '$_ = ( $. > 1 ? ($. - 2) : "" ) . ",$_";' data.txt > out.txt
    

    Perl 单行代码使用这些命令行标志:
    -e:告诉 Perl 查找内联代码,而不是在文件中。
    -p:循环输入一行一次,默认分配给$_。在每次循环迭代后添加print $_

    $.:当前输入行号。

    另请参阅:
    perldoc perlrun: how to execute the Perl interpreter: command line switches
    perldoc perlvar: Perl predefined variables

    【讨论】:

      猜你喜欢
      • 2023-02-05
      • 2018-06-09
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2013-10-11
      相关资源
      最近更新 更多