linux - 在 Shell 中,如何对作为字符串一部分的数字进行算术运算?

标签 linux shell unix awk sh

<分区>

我想将 100 添加到插入中,在下面尝试过,但它却添加了 $1?

#!/bin/bash
change_summary="17 files changed, 441 insertions(+), 49 deletions(-)"
lines_added="100"
echo $change_summary
echo $change_summary | awk '{ print $1 " " $2 " " $3 " " $4+$lines_added " " $5 " " $6 " " $7}'

它打印

17 files changed, 441 insertions(+), 49 deletions(-)
17 files changed, 458 insertions(+), 49 deletions(-)

我期望它打印 541 个插入。

有没有更好的方法来做同样的事情?

最佳答案

使用 awk 变量(使用 GNU awk 测试):

 awk -v l=$lines_added '{ print $1 " " $2 " " $3 " " $4+l " " $5 " " $6 " " $7}'

或者更简洁:

 $ echo $change_summary | awk -v l=$lines_added '{ $4 += l; print}'
 17 files changed, 541 insertions(+), 49 deletions(-)

关于linux - 在 Shell 中,如何对作为字符串一部分的数字进行算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099230/

相关文章:

mysql - 如何使用 || 检查 mysql 查询是否成功在 shell 脚本中?

linux - awk'BEGIN {sum = 0} END {print sum}'文件名的输出是什么?

linux - 在循环中使用两个变量来访问同一文件夹中的两种不同文件类型shell脚本linux

java - 在linux命令上打开2个jar文件

linux - Emacs 粘贴不起作用

Linux 时区警告

javascript - 按 unix 时间戳数据属性对元素进行排序

linux - gawk 不会过滤掉更大的数字吗?

R 脚本和库预加载?

shell - 使用运算符 j 操作 zsh 数组