如何使用命令行工具根据固定宽度文本文件中特定内容的内容快速提取行?

时间:2015-06-15 23:28:57

标签: command-line awk sed grep

我有一个大文本文件(> 4 gb),它是固定宽度格式的。我想根据特定列中的内容获取该文件的子集。最快的方法是什么?

例如,文件将具有以下格式:

Column width 1 = 3
Column width 2 = 3
Column width 3 = 2
Column width 4 = 2
Column width 5 = 1
Column width 6 = 2
Column width 7 = 2
Column width 8 = 2
Colwidth 9 = 2

该文件的一行可能如下所示:

150-9912 17 7 1 0 0

如果我想根据第2列的值进行搜索(例如第2列的值== -99),那么最有效的方法是什么?我有多个文件~4GB大小,每个文件中有近1000万行。感谢帮助!

1 个答案:

答案 0 :(得分:2)

使用GNU awk:

awk 'BEGIN{FIELDWIDTHS="3 3 2 2 1 2 2 2 2"} $2==-99'

上述内容将帮助您顺利完成。