[linux] probleem met spaties aan begin van een regel

Paul Slootman paul+nospam op wurtel.net
Do Feb 20 13:47:41 CET 2020


On Thu 20 Feb 2020, paai wrote:

> > > Als je nu het eerste woord wilt isoleren, moet je met een kanon als gawk op
> > > die mug gaan schieten, terwijl 'cut' veel eleganter lijkt.
> > > 
> > > Wat is de mooiste oplossing hervoor?
> > awk '{print $1}' voor het 1e kolom gescheiden door spaties.

> Maar ik wil dus awk niet gebruiken...

Waarom niet? Denk je dat die zwaarder is dan cut?

# ps faxu | time awk '{print $1}' > /dev/null
0.00user 0.00system 0:00.18elapsed 1%CPU (0avgtext+0avgdata 2472maxresident)k
0inputs+0outputs (0major+108minor)pagefaults 0swaps

# ps faxu | time cut -f1 > /dev/null
0.00user 0.00system 0:00.18elapsed 5%CPU (0avgtext+0avgdata 1796maxresident)k
0inputs+0outputs (0major+76minor)pagefaults 0swaps

Het is misschien eventjes 50% meer maxresident k, maar cpu is 5 x lager,
uit dit simpele testje.


Anders wordt het al snel iets als
    ps | sed 's,^  *,,' | cut -f1 -d' '
als je per se cut wil gebruiken, maar of het met een extra process in de
pipeline er beter van wordt...

Of:

    ps | while read pid rest; do echo $pid; done

maar ik denk dat awk nog steeds sneller is. 


Paul


Meer informatie over de Linux maillijst