Portál AbcLinuxu, 4. listopadu 2025 09:46
Ahoj, poradite mi jak upravit oneliner aby vyhovoval zadani a pocital soucet sloupcu:
 vstup:1 2
vystup:1 2 3
echo "1 2"|perl -ple 's:(.) (.):$1 $2 
neco jako echo "1 2"|perl -ple 's:(.) (.):$1 $2 $1+$2:e' mi nefunguje
Diky!
            Řešení dotazu:
echo "1 2"|perl -ple 's/(.) (.)/join q{ }, ($1,$2,$1+$2)/e'
            Diky. 
Jde mi o to zda se da zaroven nahrazovat a pocitat. 
Mam slozitejsi log a neco oznacuji do skupin (), neco vynechavam a pak tiskunu ony vybrane() v jinem poradi a nektere potrebuji scitat
Rada bych to delala pres podobny oneliner viz vyse.
            Nefunguje mi to. Nechapu to join q{}
Budu tedy konkretni:
[INFO ][Aug 08|00:02:46.176][Thread-363][Threadname] ====== done [XX], CorrID:[398912771023675], Times:(MRqC: 0, MRqM: 0, M: 416, MReP: 1, ALL: 417)
perl -ple 's:(\[.+?\])(\[.+?\])(\[.+?\])(\[.+?\]) =.+?\[(..)\],( CorrID.+?\]), Times\:\((.+)( M\: | G\: | IR\: )(\d+)(.*)ALL\: (\d+)\):$2;$3;$4;$5;$11;$6;$11-$9;$9:g'
tam kde je tucna, bych rada mela rozdil $11-$9
Diky!
            perl -ple 's:(\[.+?\])(\[.+?\])(\[.+?\])(\[.+?\]) =.+?\[(..)\],( CorrID.+?\]), Times\:\((.+)( M\: | G\: | IR\: )(\d+)(.*)ALL\: (\d+)\):join ";",$2,$3,$4,$5,$11,$6,$11-$9,$9:e'
echo 1 2 3 4 | perl -MList::Util -pale '$_ .= " " . List::Util::sum @F;' 1 2 3 4 10
echo "1 2" | perl -ne 'if (/(\d) (\d)/) { print "$1 + $2 = " . ($1 + $2) . "\n"; }'
a složitější věci bych stejně radši rozepsal na víc řádků.
#!/bin/bash
echo "1 2" | perl -ne '
    if (/(\d) (\d)/) {
        print "$1 + $2 = " . ($1 + $2) . "\n";
    }';
            
        Tiskni
            
                Sdílej:
                
                
                
                
                
                
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.