将数字添加到文件中的字段

将数字添加到文件中的字段

我有一个文件,其中一些数据如下所示:

Archie McNichol:(206) 548-1348:250:100:175

我想把最后的 175 加 100,所以它会打印出来:

Archie McNichol:(206) 548-1348:250:100:275

这确实是我所拥有的:

#!/bin/bash
while IFS=: read -r -a LINE
do
    added=${LINE[3]} | 100
    echo "${LINE[0]}" $added+100

done < "$1"

答案1

正如杰森·乌瑞安评论的那样:

$ awk -F: '{$NF += 100}1' file

或者,纠正明显的遗漏(OFS)并按照我的方式编写,

$ awk -v FS=':' -v OFS=':' '{ $NF += 100 } { print }' file >file.new

或者,

$ awk -v FS=':' -v OFS=':' '{ $NF += 100; print }' file >file.new

这将从读取file并创建一个名为 的新文件file.new

这个简短的awk脚本将每一行视为file:- 分隔的字段组成。通过使用,$NF我们可以访问每行的最后一个字段,并且$NF += 100无论它的值是什么,我们都可以添加 100。

print输出修改后的行(1注释解中是一个真值,提示awk执行打印当前行的默认动作)。

命令行选项-v FS=':' -v OFS=':'将输入和输出字段分隔符设置为:

使用单行输入对其进行测试:

$ echo 'Archie McNichol:(206) 548-1348:250:100:175' | awk -v FS=':' -v OFS=':' '{ $NF += 100 } { print }'
Archie McNichol:(206) 548-1348:250:100:275

相关内容