Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: treat diff file in perl -- oneliner

by Discipulus (Canon)
on May 26, 2023 at 08:21 UTC ( [id://11152415] : note . print w/replies, xml ) Need Help??


in reply to treat diff file in perl

Hello,

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*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.