awk - 如何在csv文件中用递增的数字递增列值

标签 awk sed

我有一个包含 3 列的文本文件,如下所示。

$ cat test.txt
1,A,300
1,B,300
1,C,300

到目前为止,我已经尝试过,awk -F, '{$3=$3+1;print}' OFS=, test.txt
但输出如下:
1,A,301
1,B,301
1,C,301

&下面是我想要的输出

现在我只想增加第三列,输出应该如下所示
1,A,300
1,B,301
1,C,302

我怎样才能达到预期的输出?

最佳答案

可能是,假设线像您的样本一样是连续的)

awk -F ',' '{sub($3"$",$3+NR-1)}7' YourFile

它使用行号作为增量值,改变行尾而不是字段值(与 awk POV 不同,不需要用分隔符重建行)

可修改行之间的空行或其他行的替代方法(我任意使用 NF 作为过滤器,但如果有的话,取决于您的标准)
awk -F ',' 'NF{sub($3"$",$3+i++)}7' YourFile

关于awk - 如何在csv文件中用递增的数字递增列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994903/

相关文章:

awk - 如何解析bhist日志

regex - 指定 'inverted' 范围的 sed 行号范围

awk - 如何删除单词和特定标记之间的空格?

bash - 追加到前一行以进行匹配

c - sed 命令在 shell 终端下工作正常,但在 C 代码下调用 'system()' 时失败

linux - 使用awk仅将文件中的数字与固定数字相乘

linux - 在 Linux 中部分合并 2 个文本文件

linux - 如何使用 "awk"执行具有相同尾部的多个文件并导出到一些具有新尾部的新文件?

linux - 如果输出字段之一为空,awk 如何打印 "NA"

regex - 更正 bash sed 命令语法以获得正确的子字符串