`

使用awk和grep进行数据抽样比较

阅读更多

在进行数据抽样时,我们关注所抽取的数据在整体数据中分布的均匀性。

最简单的就是均匀抽取,即每隔几行选取一行。

比如,数据文件较大时,每隔10行或者每隔100行进行抽取。

 

假如数据文件还是“msg”

我们每隔10行取一行,有两种方法:

 

方法1:nl+grep

 

nl msg | grep -P '1\t' > target_file

 

方法2:awk

 

awk '{if(NR%10 ==1) print $0}' msg > target_file

 

两种方法都可以满足我们提出的需求。

但经过比较后发现,方法2效率略高于方法1,msg数据量:23380092

耗时分别为:13s、12s. (当然取决于具体的硬件)

 

而在前文中,我们统计包含某字符串的行数时,grep的效率要远远高于awk。

不难发现,是nl导致了效率的低下。nl把所有的记录都输出了一遍,效率和awk持平,而grep耗时1s左右(和上文中测试结果一致)。

 

因此在需要将文件内容都output一遍的场景下,优先选择awk方式。

 

而且,awk还有另一个好处,在面对每隔2行、3行...n行取一行的需求,实现起来更方便。

 

而nl+grep就比较纠结了,例如实现每隔一行取一行的需求:

 

nl+grep:

 

nl msg | grep -P '2\t|4\t|6\t|8\t|0\t'   > target_file

 

awk:

 

awk '{if(NR%2 ==0) print $0}' msg > target_file
1
1
分享到:
评论

相关推荐

    sed awk grep

    sed awk grep sed awk grepsed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep

    shell编程,sed,awk,grep等教程整理

    本文将深入探讨shell编程,以及与之紧密相关的sed、awk和grep命令,这些都是Linux系统中进行文本处理和数据操作的重要工具。 首先,让我们了解什么是Shell编程。Shell是操作系统提供的一个接口,允许用户与系统内核...

    sed_awk_grep.chm

    sed awk grep命令使用 sed awk grep命令使用 sed awk grep命令使用

    linux系统,awk,grep,sed

    ### Linux系统中的查询三剑客:grep、awk、sed 使用详解 #### grep 命令详解 `grep` 是一个非常强大的文本搜索工具,它可以在文本中查找指定的字符串,并且能够逐行处理文本。这使得 `grep` 成为了文本处理和数据...

    grep,sed, awk 总结

    grep适用于简单的搜索和计数任务,sed则更加强大,可以进行文本替换和复杂编辑,而awk则类似于一种简化的编程语言,其在文本处理上提供了极高的灵活性和强大的功能。熟练掌握这三个工具,将大幅提高Linux环境下的...

    awk、sed和grep

    例如,可以先用`grep`筛选出包含特定模式的行,然后通过`sed`进行格式化或删除不需要的信息,最后用`awk`进行数据分析和处理。在学习过程中,建议从简单的命令开始,逐渐熟悉它们的语法和功能,然后尝试解决实际问题...

    grep,sed,awk命令实例大练习

    在Linux或Unix环境中,`grep`、`sed`和`awk`是三个非常强大的文本处理工具。通过掌握这些工具的基本用法及高级功能,用户可以高效地处理各种文本文件。下面将详细介绍如何使用这些命令进行具体的文本操作。 #### 1....

    grep、sed、awk、perl等对正则表达式的支持的差别

    在IT领域,文本处理是日常工作中不可或缺的一部分,而grep、sed、awk和perl这四个工具在处理文本时都广泛地使用了正则表达式。它们各自有着不同的特性和适用场景,理解它们之间的差异有助于我们更高效地进行文本操作...

    windows上可直接使用的awk、sed、grep等文本处理命令和彩色显示echo命令(from.Cygwin).zip

    包含命令:awk、cat、cut、diff、echo、gawk、grep、head、sed、sort、tac、tail、tr、uniq、wc 可以在windows上cmd窗口显示彩色文字,用法:echo.exe -e "\033[32;1mGREEN\033[0m

    linux匹配命令awk、grep、sed简介

    以上介绍涵盖了 awk、grep 和 sed 的基础概念和使用方法,以及正则表达式的基本概念和一些常见的元字符。这些工具和技巧对于日常的文本处理和数据管理非常实用,是 Linux 用户和系统管理员不可或缺的一部分。

    linux grep sed awk命令详解

    通过以上内容,我们可以看出grep、sed和awk都是非常强大且灵活的工具,它们各自拥有不同的优势,可以根据实际需求选择合适的方法来处理文本文件。在实际工作中,熟练掌握这些命令可以帮助我们高效地完成各种文本处理...

    巧用AWK处理二进制数据文件

    "巧用AWK处理二进制数据文件" AWK是Unix、Linux中处理文本的好工具,可以对复杂的文本...使用AWK处理二进制数据文件需要组合多种工具,包括OD、sed和AWK,并且需要根据不同的数据结构和输出要求,设计相应的AWK脚本。

    win下的grep/sed/awk

    总的来说,`grep`、`sed`和`awk`是文本处理的三剑客,它们在Windows下的实现,使得开发者和系统管理员能够在非Unix/Linux环境中进行高效的文本数据操作和分析。熟悉并掌握这三个工具,对于提升工作效率和解决问题的...

    awk,sed,grep总结

    在IT行业中,文本处理是日常工作中不可或缺的一部分,而awk、sed和grep是Linux/Unix环境中强大的文本处理工具。这三个工具各自具有独特的功能,但又常常相互配合,为数据过滤、格式化和查找提供了强大支持。下面我们...

    Linux重点命令(sed、awk、grep、tr等)详解教程大全.docx

    本文将深入探讨几个常用的命令,包括sed、awk、grep和tr,它们都是强大的文本处理工具,尤其在处理大量文本数据时非常有用。 首先,让我们聚焦于AWK命令。AWK是由Aho、Weinberger和Kernighan三位计算机科学家开发的...

    awk和sed思维导图

    在Unix/Linux操作系统中,awk和sed是两款强大的文本处理工具,它们被广泛用于数据提取、格式转换、文本操作等任务。这两个命令都是基于行的工具,处理文本时以行为单位进行操作。 **awk** awk是一种编程语言,它...

    msys2-x86_64-20150512可以在windows使用linux命令ps,ls,awk,grep

    msys2-x86_64-20150512可以在windows使用linux命令ps,ls,awk,grep,scp,clone,svn等等 安装后,记住在windows的环境变量里面设置好msys2的安装目录为系统路径

    轻量级的命令行JSON处理器:类似于JSON数据处理工具、awk、grep等 它用可移植的C语言编写,没有运行时依赖

    一个轻量级的、灵活的命令行JSON处理器,类似于JSON数据处理工具、awk、grep等。它用可移植的C语言编写,没有运行时依赖,允许您轻松地切片、过滤、映射和转换结构化数据。jq 是一个强大的工具,用于在命令行环境中...

    Unix awk使用手册

    在实际应用中,`awk`常与其他Unix工具如`grep`、`sed`、`sort`和`find`等结合使用,形成强大的数据处理流程。例如,`grep`用于查找匹配特定模式的行,`sed`用于行级别的替换和转换,而`awk`则用于更深入的数据处理和...

Global site tag (gtag.js) - Google Analytics