加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

大文件的awk和sum行

发布时间:2020-12-13 23:52:32 所属栏目:Linux 来源:网络整理
导读:我有数百个要处理的文件.每个文件包含数百万行. 示例文件内容: ---------------1235---------------805---------------15564--------------- 我需要输出如下所示(由前一个文件中的破折号分隔的数字之和): 201366 我使用while,if,else和awk一起使用但是if /
我有数百个要处理的文件.每个文件包含数百万行.

示例文件内容:

---------------
12
3
5
---------------
8
0
5
---------------
1
5
56
4
---------------

我需要输出如下所示(由前一个文件中的破折号分隔的数字之和):

20
13
66

我使用while,if,else和awk一起使用但是if / else会大大减慢处理速度.

任何想法如何使用纯awk来加速计算?

解决方法

你不需要if / else块,

$awk 'FNR>1 && /^----/ {print sum; sum=0; next} {sum+=$1}' file{1,2} 
20
13
66
20
13
66

例如,输入file1和file2的副本.例如,也许你会一次一个地运行它们,或者在多个输入之前使用前缀作为前缀

$awk 'FNR==1{block=0} FNR>1 && /^----/ {print FILENAME,++block,sum; sum=0; next} 
                                        {sum+=$1}' file{1,2} 

file1 1 20
file1 2 13
file1 3 66
file2 1 20
file2 2 13
file2 3 66

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读