【发布时间】:2015-04-12 05:56:36
【问题描述】:
我是 AWK 的新手,我正在努力为我的问题找出答案。我有一个包含以下值的平面文件:
403 | SanMateo | f | 2015-04-09 18:50:24.38
403 | SanMateo | t | 2015-04-09 18:45:24.36
403 | SanMateo | t | 2015-04-09 18:40:24.383
403 | SanMateo | f | 2015-04-09 18:35:24.357
403 | SanMateo | t | 2015-04-09 18:30:24.355
404 | RedwoodCity| f | 2015-04-09 18:35:50.308
404 | RedwoodCity| t | 2015-04-09 18:30:50.242
404 | RedwoodCity| f | 2015-04-09 18:25:50.245
404 | RedwoodCity| t | 2015-04-09 18:20:50.242
404 | RedwoodCity| f | 2015-04-09 18:15:50.242
我想用 awk 比较当前行的 $1 和下一行的 $1,以及 $3 ~/f/.如果语句为真,则从当前行的 $4 中减去下一行的 $4,并将差值写入当前行的新列,如果为假,则不执行任何操作。我到目前为止是这样的:
awk 'BEGIN {FS="|";} {if (NR $1 ~ NR++ $1 && $3 ~ /f/) subtract = NR $4 - NR++ $4; {print subtract}}' allHealthRecords_Sorted
显然这行不通。有人可以帮忙吗?
【问题讨论】:
-
不要想着想对下一行做点什么,而是想着想对上一行做点什么。你不能看下一行,因为你还没有读过它,但你已经读过上一行。这样想,解决方案就会来找你。
-
感谢您的建议,我会牢记这一点。