On 13.7.2016 0:30, Milan Cizek wrote:
asi je to OT, ale nemůžu dohledat příčinu rozdílného chování tohoto příkazu:

Teda, kdyz uz v ramci te radky volam 'sed' tak bych to vyresil cele v nem. Bylo by mi lito pameti i procesoru na volani awk:

df -T | sed '1d;s/^[^ ]*  *\([^ ]*\)  *\([^ ]*  *\)\{4\}\([^ ]*\)  */\1|\3/;'

Regularni vyrazy obecne nejsou moc citelny, ale ve skutecnosti je to jen nekolik opakovani stale stejneho popisu formatu jednoho sloupce vystupu - no a pak vyrazeni tech, ktere chci.

Ovsem, pokdu se to cele ma volat z PERLu, tak by mi bylo lito volat i ten 'sed' a zrejme bych skoncil na necem takovem:

open(DAT,"/bin/df -T |") || die "Could not open the file";
while(<DAT>){
    next if $. < 2; # Skip first line
    my @line = split;
    print "$line[1]|$line[6]\n";
}
close(DAT);

Na to ses ale neptal ...

df -T | sed 1d | awk '{gsub(/\s+$/, //, $7) $7; print $2 "|" $7}'
dělá přesně co chci

Jakmile to ale dám do perlu, pak mi tam ty mezery za $7 zůstávají... :(
my @df = `df -T | sed 1d | awk '{gsub(/\\s+\$/, //, \$7) \$7; print \$2 "|"
\$7}'`;
print Dumper(\@df);

Me ne - a predpokladam, ze ani tobe ne, ze jen spatne koukas. To co na konci "prebyva" neni mesera, ale znak konce radku. Ktery tam byl i kdyz to nebylo v perlu.

Nemam perl rad a nejsem s nim kamarad, tak ti nereknu jak ho presvedcit, aby se spravne vyporadal s koncema radku. Ale pokud v perlu pises, tak to urcite zvladnes sam.


Dan



--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem