linux列统计不同值操作的awk或shell脚本

发布网友 发布时间:2022-04-22 03:49

我来回答

1个回答

热心网友 时间:2024-08-14 18:19

!#/bin/awk -f
BEGIN{
    print "下面是文件对列的统计";
}
{
    for(i=1;i<=NF;i++)
        ++a[i][$i];
}
END{
    for(i=1;i<=NF;i++)
    {
            printf("第%s列",i);
            for(j in a[i]) printf("\t%s,%s次",j,a[i][j]);
            print "";
        }
        print "输出完毕";
}


将这个文件保存成一个文本文件,我这里举例文件名叫script,你要改成什么都可以

然后在命令行里敲

gawk -F"," -f /path/to/script /path/to/your/txt/file


比如你的test.txt和script文件都放在同一个文件夹/home/ha,那这个命令就是

gawk -F"," -f /home/ha/script /home/ha/test.txt


或者你也可以单敲一行命令

gawk -F"," 'BEGIN{ print "开始输出对列的统计"; } { for(i=1;i<=NF;i++) ++a[i][$i]; } END { for(i=1;i<=NF;i++) { printf("第%s列",i); for(j in a[i]) printf("\t%s,%s次",j,a[i][j]); print ""; } print "输出完毕"; }' test.txt


都是一样的,test.txt是你要统计的文件


这下面你的文件产生的输出


开始输出对列的统计

第1列 1,5次 10,1次

第2列 2,4次 20,2次

第3列 3,5次 30,1次

第4列 4,6次

第5列 5,5次 50,1次

第6列 6,3次 60,3次

输出完毕


awk有很多很多版本,这个脚本用gawk是可以的,其他的awk不一定。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com