filtrare de liste in shell

Un snippet interesant peste care am dat astazi:

sieve() {
  read x || return
  echo $x
  sieve | grep -v "^$x$"
}

Functia se apeleaza recursiv si filtreaza liniile identice fara sa faca sort. Dezavantajul e ca consuma multa memorie, fiind pornite N shelluri suplimentare si N grep-uri, asa ca nu e viabila pentru liste lungi. Probabil e scrisa de cineva care stie LISP, ca s-ar citi ceva gen "returneaza CAR si scoate CAR din CDR, dupa ce-l treci prin aceeasi procedura". Oricum, multumirile mele autorului anonim, este foarte utila pentru ce am nevoie ;)

Comments are closed.