如何改变(减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);