比较同一列中的值并将输出定向到新列

比较同一列中的值并将输出定向到新列

我的输入文件为

DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343414 11  110005
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 2336 29843714 11  110006
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343214 11  110007
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 2336 29843914 11  110009
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945414  11  110010
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343314 11  110013
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945614  11  110015
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0941 29343514 11  110019
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 0941 7446214  11  110021
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945814  11  110022
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 0941 7446414  11  110024

我的要求是输出如下

DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343414 11 110005  0
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 2336 29843714 11 110006  0
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343214 11 110007  0
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 2336 29843914 11 110009  1
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945414  11 110010  0
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0940 29343314 11 110013  2
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945614  11 110015  1
DPortal=ECCN RemoteFile=4004_130122 0256 A02 141111 0941 29343514 11 110019  3
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 0941 7446214  11 110021  1
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 2336 7945814  11 110022  0 
DPortal=ECCN RemoteFile=4004_120306 1232 A03 141111 0941 7446414  11 110024  1

即最后一列应打印最后一列的下一行-1 的值,即(n+1) -n -1 =下一列。

答案1

试试这个:

awk 'NR==1{last=$NF-1}{print $0,$NF-last-1; last=$NF}' file

在第一行,我们将变量设置last为最后一个字段的值减 1 ( $NF-1),只是为了开始。稍后last仅获取$NF前一行的值。

相关内容