大文件的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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |