处理大型文本文件的行

时间:2013-09-01 19:26:16

标签: linux text-processing

我有一个巨大的文本文件,其中包含以下格式的行:

var1 val1 var2 val2 var3 val3
.
.
.
var1 val1' var2 val2' var3 val3'
. 
.
.
var1 val1'' var2 val2'' var3 val3''

如何将var3的值与特定数字(例如1000)进行比较,以保持文本文件从开始到val3 = 1000的行,并删除其余行(从该特定行到结尾) ?任何sed,awk或tail命令?

3 个答案:

答案 0 :(得分:1)

可以很好地完成这项任务。默认情况下,打印每一行,因此我尝试将一行与您的模式匹配,并在成功时退出,这样就可以避免打印文件的其余部分。

sed '/var3[ ]\+1000\([ ]\|$\)/ { q }' infile

编辑:我在号码后添加了([ ]\|$\),以避免以1000开头的数字。

答案 1 :(得分:1)

Awk解决方案:

awk '{print} /var3 1000 / {exit}' INPUTFILE

答案 2 :(得分:1)

假设您的文件是根据字段var3排序的,并且您需要所有行,直到该值大于1000:

awk '{if(!($5<=1000))exit}1' your_file

如果你的文件没有排序,你需要var3小于或等于1000的行:

awk '$5>=1000' your_file