Unix 使用awk统计第二个字段中唯一值的出现次数

Unix 使用awk统计第二个字段中唯一值的出现次数,unix,awk,Unix,Awk,我使用这个语法来计算文件第二个字段中唯一值的出现次数。有人能解释一下这是怎么回事吗。Unix如何计算此计数?它是把每一行或整个文件作为一个整体来读取。。如何分配计数并增加计数 命令: awk -F: '{a[$2]++} END {for ( i in a) { print i,a[i]}}' inputfile 这不是Unix计算,而是awk;awk不是Unix或shell,它是一种语言。演示的awk程序计算第二个字段($2。由:分隔)中每个唯一值出现的次数,并输出值和相关计数 awk -

我使用这个语法来计算文件第二个字段中唯一值的出现次数。有人能解释一下这是怎么回事吗。Unix如何计算此计数?它是把每一行或整个文件作为一个整体来读取。。如何分配计数并增加计数

命令:

awk -F:  '{a[$2]++} END {for ( i in a) { print i,a[i]}}' inputfile
这不是Unix计算,而是awk;awk不是Unix或shell,它是一种语言。演示的awk程序计算第二个字段(
$2
。由
分隔)中每个唯一值出现的次数,并输出值和相关计数

awk -F: '              # set the field separator to ":"
{                      
                       # awk reads in records or lines in a loop
    a[$2]++            # here it hashes each value to a and counts each occurrance 
} 
END {                  # after all records have been processed
    for ( i in a) {    # hash a is looped thru in no particular order
        print i,a[i]   # and value-count pairs are outputed
    }
}' inputfile
如果您想了解更多关于awk的信息,请阅读@EdMorton的以下引用(*见下文):所有awk信息的最佳来源是Arnold Robbins的《有效的awk编程》,第四版。如果你有其他的书,扔掉它,如果你想从一个网站上学习-不要,因为大多数书都是胡说八道。去拿书

*)现在去读这本书

编辑
a[$2]+
的工作原理:

样本数据和
a[$2]
的值:

1 val1 # a[$2]++ causes: a["val1"] = 1
2 val2 # a[$2]++ causes: a["val2"] = 1
3 val1 # a[$2]++ causes: a["val1"] = 2
4 val1 # a[$2]++ causes: a["val1"] = 3
这不是Unix计算,而是awk;awk不是Unix或shell,它是一种语言。演示的awk程序计算第二个字段(
$2
。由
分隔)中每个唯一值出现的次数,并输出值和相关计数

awk -F: '              # set the field separator to ":"
{                      
                       # awk reads in records or lines in a loop
    a[$2]++            # here it hashes each value to a and counts each occurrance 
} 
END {                  # after all records have been processed
    for ( i in a) {    # hash a is looped thru in no particular order
        print i,a[i]   # and value-count pairs are outputed
    }
}' inputfile
如果您想了解更多关于awk的信息,请阅读@EdMorton的以下引用(*见下文):所有awk信息的最佳来源是Arnold Robbins的《有效的awk编程》,第四版。如果你有其他的书,扔掉它,如果你想从一个网站上学习-不要,因为大多数书都是胡说八道。去拿书

*)现在去读这本书

编辑
a[$2]+
的工作原理:

样本数据和
a[$2]
的值:

1 val1 # a[$2]++ causes: a["val1"] = 1
2 val2 # a[$2]++ causes: a["val2"] = 1
3 val1 # a[$2]++ causes: a["val1"] = 2
4 val1 # a[$2]++ causes: a["val1"] = 3

这实际上是计算每个第二个字段出现的次数。这实际上是计算每个第二个字段出现的次数。谢谢James。我想了解[$2]++是如何工作的。你能详细说明一下吗?#这里它将每个值散列到a,并计算每个发生的次数。谢谢你,詹姆斯。是的,这很充分,也很有帮助。谢谢你,詹姆斯。我想了解[$2]++是如何工作的。你能详细说明一下吗?#这里它将每个值散列到a,并计算每个发生的次数。谢谢你,詹姆斯。是的,这是充分和有益的。