免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6499 | 回复: 19
打印 上一主题 下一主题

如何统计一个文件的行数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-14 11:06 |只看该作者 |正序浏览
本帖最后由 viato 于 2012-03-14 11:08 编辑

各位大虾,请教一个问题
一个文件格式如下,
awk '{ if($3==1){print $3} }' filename | wc -l   可以统计第3列在这个文件里面有多少行,请问怎么用一个脚本统计第3列里面1、2 到 20 分别占用的行数

  1. 28        1609  1        5        7
  2. 19        4016  4        5        7
  3. 56        9329  3        5        7
  4. 13        7229  1        5        7
  5. 16        5159  5        5        7
  6. 14        1681  3        5        7
  7. 70        1628  6        5        7
  8. 44        2812  1        5        7
  9. 11        4921  7        5        7
  10. 25        1641  3        5        7
  11. 10        1641  8        5        7
  12. 72        4128  1        5        7
  13. 10        1849  9        5        7
  14. 36        2081  3        5        7
  15. 16        9329  5        5        7
  16. 90        1061  1        5        7
  17. 15        9329  3        5        7
  18. 31        2209  4        5        7
  19. 34        3378  2        5        7
复制代码

论坛徽章:
0
20 [报告]
发表于 2012-05-17 15:13 |只看该作者
回复 19# Shell_HAT


    多谢大大提醒,我试试

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
19 [报告]
发表于 2012-05-16 16:38 |只看该作者
回复 18# viato


    因为awk不支持 < $2 这种方式处理多个文件,可以考虑在一个循环里面依次处理外面传进来的*

论坛徽章:
0
18 [报告]
发表于 2012-05-16 14:11 |只看该作者
本帖最后由 viato 于 2012-05-16 14:16 编辑

回复 16# Shell_HAT



#!/bin/bash
if [ $# != 2 ]
    then
        echo "use count.sh filed file"
        exit 1
fi
awk < $2 '
       -F"\t" {count[$'$1']++}
END        {for (item in count) printf "%-20s %-20s\n", item, count[item]}'


这个脚本
# count.sh 3 filename.txt 可以统计
# count.sh 3 * 就不能统计目录下的多个文件了

论坛徽章:
0
17 [报告]
发表于 2012-05-16 14:09 |只看该作者
回复 15# rdcwayx


    我开始也不知道文件里面有的列是空格或tab ,awk加 -F"\t" 就可以了

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
16 [报告]
发表于 2012-05-13 14:53 |只看该作者
回复 14# viato


    你把原始文件压缩一下传上来。

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
15 [报告]
发表于 2012-05-11 18:53 |只看该作者
都翻到第二页了,到现在你都不给出有空格的例子,不管是第一列还是第三列。 让别人如何猜测你的要求?

论坛徽章:
0
14 [报告]
发表于 2012-05-11 18:34 |只看该作者
本帖最后由 viato 于 2012-05-11 18:48 编辑

我这个脚本可以,是文件里面的格式不对,第1列有的是空格,要排除一下空格

不过 如果是*

count.sh 3 *  多个文件就不行了,不知道大家有什么办法

论坛徽章:
0
13 [报告]
发表于 2012-05-11 18:12 |只看该作者
本帖最后由 viato 于 2012-05-11 18:31 编辑

我的脚本代码如下:

#!/bin/bash
if [ $# != 2 ]
    then
        echo "use count.sh filed file"
        exit 1
fi
awk < $2 '
        {count[$'$1']++}
END        {for (item in count) printf "%-20s %-20s\n", item, count[item]}'


# count.sh 1 filename.txt 可以统计第一行
# count.sh 3 filename.txt 不能统计第3列在这个文件里面有多少行,请教大家要怎么改这个脚本

filename.txt
  1. 28        1609  1        5        7        7
  2. 19        4016  4        5        7        7
  3. 56        9329  3        5        7        7
  4. 13        7229  1        5        7        7
  5. 16        5159  5        5        7        7
  6. 14        1681  3        5        7        7
  7. 70        1628  6        5        7        7
  8. 44        2812  1        5        7        7
  9. 11        4921  7        5        7        7
  10. 25        1641  3        5        7        7
  11. 10        1641  8        5        7        7
  12. 72        4128  1        5        7        7
  13. 10        1849  9        5        7        7
  14. 36        2081  3        5        7        7
  15. 16        9329  5        5        7        7
  16. 90        1061  1        5        7        7
  17. 15        9329  3        5        7        7
  18. 31        2209  4        5        7        7
  19. 34        3378  2        5        7        7
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
12 [报告]
发表于 2012-04-28 20:51 |只看该作者
回复 11# viato


    数组。找本awk的书吧
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP