Command line 如何使用命令行工具根据固定宽度文本文件中特定内容的内容快速提取行?
我有一个固定宽度格式的大文本文件(>4GB)。我想根据特定列中的内容获取该文件的子集。最快的方法是什么 例如,该文件将具有以下格式:Command line 如何使用命令行工具根据固定宽度文本文件中特定内容的内容快速提取行?,command-line,awk,sed,grep,Command Line,Awk,Sed,Grep,我有一个固定宽度格式的大文本文件(>4GB)。我想根据特定列中的内容获取该文件的子集。最快的方法是什么 例如,该文件将具有以下格式: 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 文件的一行可能如下所示: 15
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万行。谢谢你的帮助 使用GNU awk:
awk 'BEGIN{FIELDWIDTHS="3 3 2 2 1 2 2 2 2"} $2==-99'
以上内容将使您顺利完成。视情况而定。您是否只需要执行一次,或者这是您的应用程序通常执行的操作?我想将这些行提取到一个新文件中,并分析该数据子集。这并不能回答我的问题;)很抱歉。这是一个一次性使用的脚本。然后我只需使用
awk'$2==-99'大文件