[egrep] -v -f filename werkt niet

Pagina: 1
Acties:

  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 21-02 21:56
Hai. Ik probeer met egrep voor elkaar te krijgen dat ik allerlei tekst uit de output van ls uitfilter, behalve woorden die ik in een bestandje heb staan. dan kom ik uit op zoiets:
code:
1
ls -alt /home/osiris | egrep -v -f uitzonderingenfile

output: helemaal niets.
Toen heb ik dit geprobeerd:
code:
1
ls -alt /home/osiris | egrep -v "-f /home/gertjan/uitzonderingenfile"

maar dan krijg ik een error terug:
code:
1
egrep: 0652-033 Cannot open /home/gertjan/uitzonderingenfile

Terwijl die file bestaat, er woorden instaan, filepermissie staat wagenwijd open... En nu snap ik het even niet meer ;)

OS is trouwens AIX 5.2. En ondanks dat dit waarschijnlijk zeer eenvoudig is, is het geen huiswerk (die tijd heb ik achter me, helaas!)

ach...in een volgend leven lach je er om!


Verwijderd

Hmz, het volgende werkt onder linux (debian unstable / 2.6.3):
code:
1
2
3
4
5
6
7
8
9
10
sasami [r3boot]$ pwd
/usr/people/r3boot
sasami [r3boot]$ cat bladiebla
BassDrive.m3u
patch-2.6.2.bz2
sasami [r3boot]$ ls -alt . | egrep -f ./bladiebla
-rw-r--r--    1 r3boot   people    2322327 Feb  4 04:02 patch-2.6.2.bz2
-rw-r--r--    1 r3boot   people        124 Dec 22 10:45 BassDrive.m3u
-rw-r--r--    1 r3boot   people        124 Dec 22 10:45 BassDrive.m3u.1
sasami [r3boot]$


Is dit wat je wilt? Anders, heb je truss, strace, of een andere trace utility op die bak staan?

offtopic:
For those that care and want to know: /usr/people komt uit de sgi wereld; linux kent /home, bsd kent /usr/home, solaris /exports/home en sgi kent /usr/people :+

[ Voor 15% gewijzigd door Verwijderd op 01-03-2004 14:48 ]


  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 21-02 21:56
Nee, ik wil er die -v optie bij, omdat ik in die file dingen heb staan die ik NIET gegrept wil hebben. Jouw commando doet het overigens prima maar ik wil het vershil tussen alles en de output van jouw commando hebben (als je begrijpt wat ik bedoel ;) )
Anders, heb je truss, strace, of een andere trace utility op die bak staan?
yup, beide (gebruik je truss niet om in een stream te loeren?)

ach...in een volgend leven lach je er om!


Verwijderd

Ok, als ik m'n commando zo wijzig dat ie -v gebruikt, doet ie precies wat je wilt. Echter werkt het dan onder linux. Het klinkt als een bug in de AIX egrep (welke grep gebruik je eigenlijk GNU of AIX grep?). Met strace cq truss kun je de systemcalls tracen die door grep gemaakt worden, en dan kun je ook zien of er wat mis gaat met de open() call die grep nodig heeft om die file in te lezen...

Verwijderd

wat dacht je van:
code:
1
find /home/osiris -type f -exec egrep -v -f uitzonderingenfile {} \;

  • grep
  • Registratie: Augustus 2001
  • Laatst online: 30-01 13:52

grep

meer begrep...

Voorbeeld doet het bij mij hier (HP-UX) ook prima :?
Heb zelf geen beschikking over AIX, maar kan via via toch op een AIX bak komen. Daar es in de man page van egrep gekeken:

code:
1
2
3
4
5
6
7
8
9
10
11
egrep Command

Purpose

Searches a file for a pattern.

Syntax

egrep [ -h ] [ -i ] [ -p[ Separator ] ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [
-b ] [ -n ] | [ -c | -l | -q ] ] { { -ePattern | -fStringFile } ... | Pattern }
[ File ... ]


Nou valt me op dat StringFile strak tegen -f aanstaat. dus probeer es:
code:
1
ls -alt /home/osiris | egrep -v -fuitzonderingenfile


Unix kan behoorlijk pietleutig zijn soms :Y)

Edit: hmm, zelf ook ff door geexperimenteerd maar blijft werken, wat ik ook doe....
Nou zie ik ook dat je uitzonderingenfile in een home directory van een ander staat . Weet je wel zeker dat je genoeg rechten hebt om dat file te benaderen?

[ Voor 17% gewijzigd door grep op 01-03-2004 16:02 ]


  • Bas!
  • Registratie: April 2000
  • Laatst online: 30-11-2025
Hier onder aix 4.2 werkt je commando gewoon
Misschien dat je uitzonderingenfile iets niet lekker heeft staan
ls -alt|egrep -v -f test
bedenk je wel dat als er een lege regel in die file staat hij niets vindt
alles match-t niets
edit:

of meer een end-of-line

[ Voor 48% gewijzigd door Bas! op 01-03-2004 16:17 ]


  • 0siris
  • Registratie: Augustus 2000
  • Laatst online: 21-02 21:56
Bas! schreef op 01 maart 2004 @ 16:09:
bedenk je wel dat als er een lege regel in die file staat hij niets vindt
alles match-t niets
edit:

of meer een end-of-line
_/-\o_
Tja, ff 1x teveel op enter gedrukt, meteen doet je hele script niets meer :o
Maar dat was het dus..... helemaal fantastisch, mijn dank! (en weer wat geleerd!)

ach...in een volgend leven lach je er om!

Pagina: 1