the problem sounded intriguing and, for my own amusement I got this, where the output is not exactly what asked for but still human readable:
perl -n0E "map{for(join'|',split/\n/){$r{$2}=$1if/(.*)time: (.*);/}map +{s/-/BEFORE/g;s/\+/AFTER/g;s/.*id : (\d+);.*name: \w+;/ IN \1 /;s/[;| + ]+/ /g}values%r}split/^.*@;/m;say$_.$r{$_}for sort keys%r" diff-exam +ple.txt 2023-01-01 12:00 IN 6109 value: 0 BEFORE status: ? AFTER status: C 2023-01-01 12:03 IN 6109 BEFORE value: 0 BEFORE status: ? AFTER value: + 2 AFTER status: CS 2023-01-01 12:05 IN 6109 value: 0 BEFORE status: ? AFTER status: C
The oneliner became ugly and longish for the text formatting, while a shorter one still has an acceptable output:
perl -n0E "map{for(join'',split/\n/){$r{$2}=$1if/(.*)time:(.*)/}}split +/.*@;/m;say$_.$/.$r{$_}for sort keys%r"
L*
In reply to Re: treat diff file in perl -- oneliner
by Discipulus
in thread treat diff file in perl
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |