计算各类文本以"|"分隔的tar.gz文件第20和21个字段之和,提高性能

时间: 2024-02-27 12:52:54 浏览: 23
可以使用Linux的命令行工具 grep、cut 和 awk 进行处理。首先使用grep过滤出所有包含"|"的行,然后使用cut命令提取出第20和21个字段,并使用awk计算它们的和。具体命令如下: ```shell zgrep "|" file.tar.gz | cut -d "|" -f 20,21 | awk -F "|" '{sum += $1 + $2} END {print sum}' ``` 其中,zgrep命令用于在压缩文件中搜索包含"|"的行,cut命令用于提取第20和21个字段,awk命令用于计算它们的和并输出结果。 为了提高性能,可以使用多核CPU并行处理数据。可以使用GNU Parallel工具来实现并行化,具体命令如下: ```shell zcat file.tar.gz | parallel --pipe --block 10M "grep '|' | cut -d '|' -f 20,21 | awk -F '|' '{sum += \$1 + \$2} END {print sum}'" | awk '{sum += $1} END {print sum}' ``` 其中,zcat命令用于解压缩文件,parallel命令用于并行处理数据。--pipe选项将数据流传递给后面的命令,--block选项指定每个并行任务处理的数据块大小,grep、cut和awk命令与之前相同,最后再使用awk命令计算所有并行任务的结果总和。
相关问题

计算各类文本以"|"分隔的tar.gz文件第20和21个字段之和,提高性能脚本

可以使用GNU Parallel和awk来实现该功能,具体步骤如下: 1. 使用GNU Parallel并行处理多个tar.gz文件。假设tar.gz文件存放在/data目录下: ```bash ls /data/*.tar.gz | parallel "tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'" ``` 这条命令会列出/data目录下所有的tar.gz文件,然后使用GNU Parallel并行处理每个文件,解压并输出第20和21个字段的和。 2. 如果需要输出每个文件的结果,可以在parallel命令中加入echo: ```bash ls /data/*.tar.gz | parallel "echo {}; tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'" ``` 这样就会在结果中输出每个文件的名称。 3. 如果需要将结果保存到文件中,可以使用重定向符号">": ```bash ls /data/*.tar.gz | parallel "echo {}; tar -xzf {} -O | awk -F '|' '{print \$20+\$21}'" > result.txt ``` 这样就会将所有结果保存到result.txt文件中。 注意,上述命令中的awk命令使用了-F参数来指定分隔符为"|",$20和$21分别表示第20和21个字段。由于$符号在bash中有特殊含义,因此需要使用反斜杠来转义。

计算各类文本以"|"分隔的.gz文件第20和21个字段之和,使用xargs提高性能脚本

假设.gz文件名为text.gz,可以使用以下脚本: ```bash zcat text.gz | cut -d"|" -f20,21 | tr "|" "\t" | awk '{sum += $1 + $2} END {print sum}' | xargs echo "The sum is" ``` 这个脚本使用了以下几个命令: - `zcat`: 解压缩.gz文件 - `cut`: 根据"|"分隔符提取第20和21个字段 - `tr`: 将"|"替换为制表符,以便后续的`awk`命令可以正确解析 - `awk`: 对提取的字段求和 - `xargs`: 输出结果 使用`xargs`可以提高性能,因为它可以将`awk`的输出结果作为参数传递给`echo`命令,而不是逐行传递。这样做可以减少命令的调用次数,从而提高性能。

相关推荐

最新推荐

recommend-type

Python实现将一个大文件按段落分隔为多个小文件的简单操作方法

主要介绍了Python实现将一个大文件按段落分隔为多个小文件的简单操作方法,涉及Python针对文件的读取、遍历、转换、写入等相关操作技巧,需要的朋友可以参考下
recommend-type

Linux awk将文件某列按照逗号分隔的例子

今天小编就为大家分享一篇关于Linux awk将文件某列按照逗号分隔的例子,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

新建文本文档.txt

新建文本文档
recommend-type

开源Git gui工具Fork

开源Git gui工具Fork,CSDN能找到教程,但是资料不多,推荐用Tortoise
recommend-type

yolov5在华为昇腾atlas上加速推理

该资源为yolov5在华为昇腾atlas上使用Ascend310芯片加速推理,属于c++后端开发,适合C++开发者在华为昇腾盒子上移植深度学习算法的博主们。 资源是demo形式,包含完整的一套代码,还有转好的离线模型文件和跑出的测试结果图片。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

HSV转为RGB的计算公式

HSV (Hue, Saturation, Value) 和 RGB (Red, Green, Blue) 是两种表示颜色的方式。下面是将 HSV 转换为 RGB 的计算公式: 1. 将 HSV 中的 S 和 V 值除以 100,得到范围在 0~1 之间的值。 2. 计算色相 H 在 RGB 中的值。如果 H 的范围在 0~60 或者 300~360 之间,则 R = V,G = (H/60)×V,B = 0。如果 H 的范围在 60~120 之间,则 R = ((120-H)/60)×V,G = V,B = 0。如果 H 的范围在 120~180 之间,则 R = 0,G = V,B =
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。