【问题标题】:Add number of line with awk用 awk 添加行数
【发布时间】:2018-04-04 00:01:38
【问题描述】:

我想知道如何编辑我的 csv 文件以添加名称为“linenumber”的第一列并遍历每一行并在此列中插入行号?

类似的东西

TEST TEST2 TEST3
valu value value

到此

linenumber TEST TEST2 TEST3
1          valu value value

提前致谢

斯托菲尔

【问题讨论】:

    标签: linux bash csv awk sed


    【解决方案1】:

    遵循 awk 应该对您有所帮助。

    awk 'FNR==1{print "linenumber",$0;next} {print FNR-1,$0}'   Input_file
    

    如果您需要编辑 Input_file 本身,那么以下内容可能会对您有所帮助。

    awk 'FNR==1{print "linenumber",$0;next} {print FNR-1,$0}'  OFS=","  Input_file > temp_file && mv temp_file  Input_file
    

    【讨论】:

    • 它运作良好,但它不是一个新列,事实上他们添加了数字和值:/
    • @Stoufiler,你能解释一下你上面的陈述吗,抱歉没明白。
    • 对不起,我不是英语 :) 现在的问题是文件包含相同数量的列,但第一个是连接的,所以第一列的标题是 linenumber TEST 而不是 linenumber | TEST
    • @RavinderSingth13 谢谢,我将尝试正确解释自己,实际上,当我使用您传递给我的命令时,文件已被很好地修改但未添加 linenumer 列,它被添加到第一个,以便第一列等于 linenumber + titleoftheextcolumn
    • @RavinderSingth13 不是一样的吗,我发布了一个代码共享来向您展示您的问题[链接]codeshare.io/Gbw3xV
    【解决方案2】:

    我找到了答案,就是这样

    awk 'FNR==1{print "linenumber,"$0;next} {print FNR-1,$0}' OFS="," input.csv > output.csv
    

    谢谢大家

    【讨论】:

    • @RavinderSingh13 很抱歉再次回来,但我想知道如何反转这个过程,所以删除第一列? :)
    • 好的,请编辑您的帖子或打开一个帖子,然后在同一时间告诉我,
    • @RavinderSingh13 没关系,这是新帖子stackoverflow.com/questions/46904805/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多