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