Bash 使用sed将变量求值为整数

Bash 使用sed将变量求值为整数,bash,sed,echo,sh,Bash,Sed,Echo,Sh,这对一个知道的人来说是很容易的。我马上就要完成这个命令了 echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/VERSION=\1.\2+1/' 我只想写VERSION=1.1。如何将\2计算为整数和总和+1 您可以使用以下命令: echo VERSION=`echo "1.0 + 0.1" | bc` 结果: VERSION=1.1 Crpytic答案-如何使用整个工具包: x='VERSION=1.0' echo -n $x

这对一个知道的人来说是很容易的。我马上就要完成这个命令了

echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/VERSION=\1.\2+1/'
我只想写
VERSION=1.1
。如何将
\2
计算为整数和总和+1

您可以使用以下命令:

echo VERSION=`echo "1.0 + 0.1" | bc`
结果:

VERSION=1.1


Crpytic答案-如何使用整个工具包:

x='VERSION=1.0'
echo -n $x | sed 's/\..*/./'; expr `echo $x | grep -o '\..*' | cut -c 2-` + 1

当然,塞德可以做到这一点。这就是e的目的。您可以使用“e”将匹配/替换的字符串传递给shell命令

请参见基于sed行的示例:

kent$  echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/echo "VERSION=\1.$((\2+1))"/e'                                             
VERSION=1.1

为什么
sed
?awk/perl/python/ruby/?我正在学习如何使用sed(读书)。。我开始明白了:)我明白了。。所以现在你只有一把锤子这是一个愚蠢的问题,但我使用这个命令来编写一个文件,所以我如何将这一行与此集成。因为我的变量在
\2
中,所以我如何才能做到这一点?这不是一种正常的编程语言:)您可以将版本号设置为任何变量,然后回显该变量+0.1并将其传递到bc并将输出重定向到该文件。我将更新我的答案,以显示一个示例版本的初始值来自何处?从我将保存版本号的文本文件。这将始终增加并再次保存在文件中。很好,我不知道
sed
可以做到这一点!这不是一个常见的选择。在这种情况下,awk更好。为了好玩,你可以在一个sed脚本/e中切换到另一个sed脚本,然后再切换到另一个sed。。。我在4+嵌套后做了一次,我不知道我在哪里…我使用的是Mac OS X Lion终端和sh 3.2,但它不工作,这是我的错,还是它只在linux中运行?它给出了
sed:1:“s/^VERSION=\([0-9]\)。\(…”:替换命令中的错误标志:“e”
@Rodrigo我没有mac,因此无法进行测试。该命令在bash/zsh上使用GNU sed 4.2.1。在我的linux机器上。我认为sed版本号不应该是问题,我在较低版本中使用了“e”。您的sed GNU是吗?末尾的e标志是GNU扩展。
kent$  echo VERSION=1.0 | sed 's/^VERSION=\([0-9]\).\([0-9]\)/echo "VERSION=\1.$((\2+1))"/e'                                             
VERSION=1.1