Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

[grep] Ik zoek twee trucjes te gebruiken in een "pipe&q

Anoniem
wstolk
13 antwoorden
  • Wie helpt mij op weg met de volgende twee vraagjes over grep gebruikt in (met?) een pipe?

    1) Wat is een kortere notatie voor:[code:1:21261b20e5]commando | grep zoekterm1 | grep zoekterm2[/code:1:21261b20e5]2)Hoe zoek je op zoekterm1 zonder zoekterm2? Dus iets van [code:1:21261b20e5]commando | grep zoekterm1 | grep !zoekterm2[/code:1:21261b20e5]
  • [quote:261620b84b="PeBo"]Wie helpt mij op weg met de volgende twee vraagjes over grep gebruikt in (met?) een pipe?

    1) Wat is een kortere notatie voor:[code:1:261620b84b]commando | grep zoekterm1 | grep zoekterm2[/code:1:261620b84b][/quote:261620b84b]Zet de zoekwoorden in een bestand en gebruik [code:1:261620b84b]commando | grep -f bestand[/code:1:261620b84b][quote:261620b84b="PeBo"]2)Hoe zoek je op zoekterm1 zonder zoekterm 2? Dus iets van [code:1:261620b84b]commando | grep zoekterm1 | grep !zoekterm2[/code:1:261620b84b][/quote:261620b84b]Gebruik hievoor[code:1:261620b84b]commando | grep -v zoekterm1[/code:1:261620b84b]Als je bestanden wilt gebruiken kun je[code:1:261620b84b]commando | grep -f bestand1 | grep -v -f bestand2[/code:1:261620b84b]
  • grep is regel-gebaseerd; dat is goed om in het achterhoofd te houden.

    commando | grep zoekterm1

    laat dus alleen [u:d151ad2824]regels[/u:d151ad2824] door die zoekterm1 bevatten.

    grep -v zoekterm2 laat regels waarin zoekterm2 niet voorkomt door.

    commando | grep zoekterm1 | grep -v zoekterm2

    laat dus de regels door die zoekterm1 wel bevatten en zoekterm2 niet.
  • een kortere notatie voor

    commando | grep term1 | grep term2

    is volgens mij niet zo intuïtief

    je wilt dus dat alleen regels worden doorgelaten waar zowel term1 als term2 in voorkomt.

    dat kan bijvoorbeeld zo:

    commando | grep 'term1.*term2'

    de combinatie '.*' betekent: 0 of meer willekeurige karakters.

    maar deze laat alleen regels door waar term1 vóór term2 staat.

    Als je ook andersom wilt, moet je egrep gebruiken (krachtiger (extended) regexps worden daarmee mogelijk):

    commando | egrep 'term1.*term2|term2.*term1'

    Wie weet er een slimmere manier met grep?

    Met sed of awk wordt het makkelijker:

    Sed:

    commando | sed -n '/term1/p;/term2/p'

    Awk:

    commando | awk '/term1/||/term2/ {print}'
  • [quote:fd53d5c79b="wbsoft"]Sed:

    commando | sed -n '/term1/p;/term2/p'[/quote:fd53d5c79b]En als term2 niet voor mag komen gebruik je[code:1:fd53d5c79b]commando | sed -n '/term2/d;/term1/p'[/code:1:fd53d5c79b][edit 9-2-2003 0:14]
  • Heren (?), bedankt voor het meedenken. Vooral[code:1:e39ae29929]grep -v zoekterm[/code:1:e39ae29929]en de variant in sed hielpen mij op weg. Mocht ik eens tegen iets kortere commando's aanlopen dan meld ik die hier nog even … meer een luxeprobleem: zo'n dubbele pipe is natuurlijk op zich goed te doen.

    Zondagse overpeinzing: het is aardig om te merken dat ik - opgevoed onder Microsoft Windows, want met DOS deed ik eigenlijk weinig - onder Linux steed vaker de Konsole (van KDE dus) opentrek. Allerhande klusjes gaan simpelweg makkelijker, sneller etc in de Konsole. Alleen het vinden van de handigste commando's wil nog wel eens lastig zijn …
  • … maar dan is [i:4a5ac51f9e]man[/i:4a5ac51f9e] je vriend :)
  • Soms is man inderdaad een goede vriend. Zelf gebruik ik het echter vooral als naslagwerk (hoe doe je ook alweer …? etc) en minder om iets helemaal nieuws te leren. Daarvoor zijn handboeken, tijdschriften, dit forum en dergelijke naar mijn idee prettiger.

    Ik vind man overigens wel handiger dan info, daar ben ik nog steeds niet aan gewend. 't Zal wel aan mij liggen …
  • [quote:cfba8d69f8="PeBo"]Soms is man inderdaad een goede vriend. Zelf gebruik ik het echter vooral als naslagwerk (hoe doe je ook alweer …? etc) en minder om iets helemaal nieuws te leren. Daarvoor zijn handboeken, tijdschriften, dit forum en dergelijke naar mijn idee prettiger.

    Ik vind man overigens wel handiger dan info, daar ben ik nog steeds niet aan gewend. 't Zal wel aan mij liggen …[/quote:cfba8d69f8]

    nee, dat ligt niet aan jou

    info is van die waardeloze gnu shit… een idee van zo'n gast die dacht de wereld wel ff te veranderen en dus meteen maar een mooie goed werkende manual functie wilde vervangen…
    (vandaar dat je soms bij gnu proggies 'see info ? for more information' tegenkomt.

    ok, dat was idd een beetje FI ;)
  • info is ook wel aardig hoor.

    als je maar weet dat je op "L" (last) moet drukken om weer terug te komen waar je was.

    alleen sommige info's zijn nogal lang van stof (complete boeken) en vind dan maar eens snel wat je zoekt (notoir voorbeeld: de GRUB info pagina :o )
  • maar er kan inderdaad maar weinig op tegen mooi PostScript printen:
    [b:c45a5ec0c5]man -t blabla | lpr [/b:c45a5ec0c5] en dan op je gemakkie lezen. :)
  • Vandaag vond ik ergens op slashdot deze truc om infopages behapbaar te houden:[code:1:730727ccf7]info sed –subnodes –output - | less[/code:1:730727ccf7]Zo lijkt info opeens erg op man! Overigens werkt[code:1:730727ccf7]info:/sed[/code:1:730727ccf7]als url in het onvolprezen Konquereor ook héél aardig.

    (sed is in beide gevallen maar een voorbeeld …)
  • Ja, Konqueror (of liever kio) is enorm handig. Ik sta ook verbaasd. Alleen vind ik man -r blaat | gv - nog net wat mooier dan KDEs rendering van manpages in khelpcenter, vooral voor printen.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.