Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 如何使用bash在行尾增加一个数字?_Sed - Fatal编程技术网

Sed 如何使用bash在行尾增加一个数字?

Sed 如何使用bash在行尾增加一个数字?,sed,Sed,我有一个如下所示的文本文件: qwerty=1.8 asdfg=15.9 zxcvb=144.99 我使用sed成功地将一个特定版本替换为另一个特定版本: sed s/asdfg=15.9/asdfg=15.10/ file 但我怎样才能让它充满活力呢?我的最终目标是一个可以与参数“asdfg”一起使用的命令,它将把行asdfg=15.9更新为asdfg=15.10,而我不必知道版本。使用GNU awk: $#将1添加到后面的整数= $awk'匹配($0,/(asdfg=)(.+)/,m){

我有一个如下所示的文本文件:

qwerty=1.8
asdfg=15.9
zxcvb=144.99
我使用sed成功地将一个特定版本替换为另一个特定版本:

sed s/asdfg=15.9/asdfg=15.10/ file

但我怎样才能让它充满活力呢?我的最终目标是一个可以与参数“asdfg”一起使用的命令,它将把行asdfg=15.9更新为asdfg=15.10,而我不必知道版本。

使用
GNU awk

$#将1添加到后面的整数=
$awk'匹配($0,/(asdfg=)(.+)/,m){$0=m[1]m[2]+1}1'文件
qwerty=1.8
asdfg=16.9
zxcvb=144.99
$#在小数点后加1
$awk'匹配($0,/(asdfg=[0-9]+\)(.+)/,m){$0=m[1]m[2]+1}1'文件
qwerty=1.8
asdfg=15.10
zxcvb=144.99
此处
match
用于分隔前缀字符串和要递增的数字。结果可从
m
array获得



使用
perl

$perl-pe's/asdfg=\K.+/$&+1/e'文件
qwerty=1.8
asdfg=16.9
zxcvb=144.99
e
标志允许您在替换部分使用Perl代码
\K
用于避免
asdfg=
出现在匹配部分
$&
将有匹配的部分,在本例中,这是
asdfg=
后面的数字

要仅在小数点后更改,请执行以下操作:

$perl-pe's/asdfg=\d*\.\K.+/$&+1/e'ip.txt
qwerty=1.8
asdfg=15.10
zxcvb=144.99
使用
perl-i-pe
将更改写回
文件
。使用
-i.bkp
创建备份。

请检查此url