如何使用awk有条件地附加字段的出现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用awk有条件地附加字段的出现?相关的知识,希望对你有一定的参考价值。

我有一个看起来像这样的文件:

Level,Member
HIGH,John
HIGH,John
HIGH,Paul
HIGH,George
REG,George
REG,George
REG,George
REG,John
REG,Paul
REG,Paul
REG,Ringo

如果我想在第二列中附加数据出现的计数,这很有用:

awk 'BEGIN{ FS=OFS="," }{ $0=$0 OFS (++a[$2]) }1' file

但我无法弄清楚如何添加if / else语句,以便我可以有条件地按级别计数,以便我的输出如下所示:

Level,Member,1
HIGH,George,1
HIGH,John,1
HIGH,John,2
HIGH,Paul,1
REG,George,1
REG,George,2
REG,George,3
REG,John,1
REG,Paul,1
REG,Paul,2
REG,Ringo,1 

请注意,当电平从HIGH变为REG时,计数开始。该文件已按级别排序,然后按成员排序。

答案

你的命令已经很好了。我刚刚更改了关联数组a []的关键字:

awk 'BEGIN{ FS=OFS="," }{ $0=$0 OFS (++a[$2$1]) }1' file

要么:

awk 'BEGIN{ FS=OFS="," }{ $0=$0 OFS (++a[$0]) }1' file
另一答案

要不就..

$ awk '{$0=$0","++a[$0]}1' file
Level,Member,1
HIGH,John,1
HIGH,John,2
HIGH,Paul,1
HIGH,George,1
REG,George,1
REG,George,2
REG,George,3
REG,John,1
REG,Paul,1
REG,Paul,2
REG,Ringo,1
另一答案

把事情简单化:

awk '{print $0","(++c[$0])}'

以上是关于如何使用awk有条件地附加字段的出现?的主要内容,如果未能解决你的问题,请参考以下文章

中继:有条件地在突变的胖查询中包含字段

条件片段和导航重用

使用 VBA 代码有条件地使表单行的(详细信息)按钮变灰

如何在 MongoDB 中有条件地显示/隐藏字段

使用 awk 排除以多个字段为条件的行

我如何将awk脚本附加到文件?