0

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

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 命令?

4

3 回答 3

1

Awk solution:

awk '{print} /var3 1000 / {exit}' INPUTFILE
于 2013-09-01T19:34:15.447 回答
1

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

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

如果您的文件未排序,并且您需要 var3 小于或等于 1000 的行,则:

awk '$5>=1000' your_file
于 2013-09-02T07:38:46.707 回答
1

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

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

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

于 2013-09-01T19:31:57.727 回答