在进行数据抽样时,我们关注所抽取的数据在整体数据中分布的均匀性。
最简单的就是均匀抽取,即每隔几行选取一行。
比如,数据文件较大时,每隔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
相关推荐
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等教程
sed awk grep命令使用 sed awk grep命令使用 sed awk grep命令使用
Linux三剑客awk sed grep全攻略
主要减少linux系统中的查询三剑客grep,awk,sed的使用方法和详解,适合linux初学进行学习,适合在日常对于文本内容或者命令执行结果的搜索,可以完善和简便自己的工作内容和完善对于shell脚本的使用。
awk本身就是UNIX/Linux的一种编程语言,用于处理数据和生成报告。 awk逐行方式扫描文件(或输入),以查找匹配某个特定模式的文本行,并对这些文本行执行指定动作。 awk是三个创始人的首字母,代表三个作者:Alfred ...
linux的强大的文本处理工具grep,sed,awk(文本处理三剑客)
常用linux命令在windows环境下使用 windows grep awk sed cat
linux grep sed awk命令的综合运用以及详解
msys2-x86_64-20150512可以在windows使用linux命令ps,ls,awk,grep,scp,clone,svn等等 安装后,记住在windows的环境变量里面设置好msys2的安装目录为系统路径
grep,sed,awk命令实例大练习,好东西大家分享
一个轻量级的、灵活的命令行JSON处理器,类似于JSON数据处理工具、awk、grep等。它用可移植的C语言编写,没有运行时依赖,允许您轻松地切片、过滤、映射和转换结构化数据。jq 是一个强大的工具,用于在命令行环境中...
Linux重点命令(sed、awk、grep、tr等)详解教程大全
包含命令: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
windows下的grep、sed、awk
grep、sed、awk、perl等对正则表达式的支持的差别,大牛总结的,适合高手参考用。
关于unix/linus下面的常用命令awk和sed的思维导图,通过图片全面了解了命令所需参数和命令格式,以及相应的命令中自带的函数等等。
总结awk、sed、grep的用法。
Grep家族包括Grep、 eGrep和fGrep。eGrep和fGrep的命令只跟Grep有很小不同。 eGrep是Grep的扩展,支持更多的re元字符, fGrep就是 fixed Grep或fast Grep,它们把 所有的字母都看作单词,也就是说,正则表达式中的元...
网上资料,方便自学,word版本