perl +匹配文件中的最后一个数字并将其减1

我想在我的bash脚本中添加下面的perl命令,请指教

如何改变(减less一个)在Perl文件中的最后一个以“+”字符开头的数字?

Example of original file ( before run the perl command ) more file 432423 53454 +535 343 45 +1000 

请求的输出文件示例(在运行perl命令之后)

 more file 432423 53454 +535 343 45 +999 

当我听到“对…发生的事情做些什么”的时候,我就达到了tac行,在第一事件上做了些什么。

 tac file | nawk '/^\+/&&!done {$1 = "+" substr($1,2)-1; done=1} 1' | tac 

在Solaris上,您可能没有安装tac。 你可以像这样实现它:

 tac() { sed -n -e '1!G' -e '$p' -eh "$@"; } 

你可以用下面的脚本:

 #!/usr/bin/perl -w use strict; open(INFILE, "< file") or die( "Can't open input file" ); open(OUTFILE, "> file.out") or die( "Can't open output file" ); my @lines = reverse <INFILE>; foreach my $line (@lines) { if ($line =~ /^\+(\d+)/) { $line = "+".($1-1)."\n"; last; } } my @lines2 = reverse @lines; foreach my $line (@lines2) { print OUTFILE $line; } close(OUTFILE);