#!/usr/bin/perl
use warnings;
use strict;
unlink("ccix.sdp_trc");
I want to extract the hexadecimal addr:0xdf7780 value, add 0x500000000 to it and then replace the result in the same string.
If the addr:0xdf7780 value is always six digits long then you can do a simple text substitution:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/
+addr:0x \K (?= [[:xdigit:]]+ ) /500/x; print $x'
hexadecimal addr:0xdf7780 value
hexadecimal addr:0x500df7780 value
If the addr:0xdf7780 value is always less than nine digits long then you can do:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/
+addr:0x \K ( [[:xdigit:]]+ ) / $y = "500000000"; $l = length $1; subs
+tr $y, -$l, $l, $1; $y /xe; print $x'
hexadecimal addr:0xdf7780 value
hexadecimal addr:0x500df7780 value
Otherwise, this will work:
$ perl -le'$x = "hexadecimal addr:0xdf7780 value"; print $x; $x =~ s/
+addr:0x \K ( [[:xdigit:]]+ ) / sprintf "%x", hex( $1 ) + 0x500000000
+/xe; print $x'
hexadecimal addr:0xdf7780 value
hexadecimal addr:0x500df7780 value
|