AWK:如何减去那些有数字的行的最后一个字段
我有一个文件包含:AWK:如何减去那些有数字的行的最后一个字段,awk,Awk,我有一个文件包含: A......Page 23 by John Smith B......Page 73 by Jane Doe C......Page 131 by Alice Grey 我想用22减去这些数字,所以第一行是……第1页 我在很多地方搜索过gsub或任何其他awk选项,但都没有结果。我已经通过vim编辑器完成了这项工作,但了解awk解决方案将非常棒 你能试试下面的吗 awk '{$NF=$NF~/[0-9]/ && $NF>22?$NF-22:$NF}
A......Page 23
by John Smith
B......Page 73
by Jane Doe
C......Page 131
by Alice Grey
我想用22减去这些数字,所以第一行是……第1页
我在很多地方搜索过gsub或任何其他awk选项,但都没有结果。我已经通过vim编辑器完成了这项工作,但了解awk解决方案将非常棒 你能试试下面的吗
awk '{$NF=$NF~/[0-9]/ && $NF>22?$NF-22:$NF} 1' Input_file
我认为最后一列中不需要负值,所以我检查了条件,如果
$NF
最后一列大于22
,则只执行减法,然后执行我认为的第二个条件(这很明显)您只想用数字减去22
,因此设置条件,检查最后一列中是否有数字。Shortawk
方法:
$ awk '$NF ~ /^[0-9]+$/{ $NF = $NF-22 }1' file
A......Page 1
by John Smith
B......Page 51
by Jane Doe
C......Page 109
by Alice Grey
-只考虑最后一个字段值$NF~/^[0-9]+$/
为数字的行,因为它要进行算术运算$NF