使用Linux命令awk进行高效文本预处理
2020-07-22 本文已影响0人
湘港记者
awk命令简介
AWK是一种处理文本文件的语言,是一个强大的文本分析工具。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。基础用法为
awk [-F field-separator] 'commands' input-file(s)
# 例如
awk -F ':' '{print $1}' input-files
经常需要对一些文本进行预处理,大部分同学可能直接就上Python,优点是简单直观,缺点是效率低,处理速度慢,实际上使用Linux自带的awk可以高效地完成。
简单好用的文本预处理命令实践
去重后排序
sort -n [IN_FILE] | uniq | awk '{ print length, $0 }'| sort -n | cut -d" " -f2- > [OUT_FILE]
删除长度超过NUM的文本
cat [IN_FILE] | awk '{if (length($0) <=[NUM] ) print $0}' > [OUT_FILE]
随机抽取NUM行
awk 'BEGIN{srand()} {print rand()"\t"$0}' [IN_FILE] | sort -nk 1 | head -n [NUM] | awk -F "\t" '{print $2}' > [OUT_FILE]