使用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]

TBD

上一篇下一篇

猜你喜欢

热点阅读