Toon posts:

grep in een script gebruiken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dag mensen,

Ik heb hier een klein probleempje met een scriptje waar ik mee bezig ben. (unix solaris (ksh))
Ik moet iets controleren of er een bepaalde string in een bestand zit alleen nu is het probleem dat als ik bijvoorbeeld doet: if grep blaat ~/test dan krijg ik de uitvoer op me scherm daarvan.

Nu heb ik dat wel weer opgelost door hem weg te schrijven naar een temp bestand (if grep blaat ~/test > bbb) en deze haal ik aan het eind weer weg maar toch vind ik dit een lelijke manier. iemand moet maar het bestand bbb in zijn dir hebben staan dan heb je al de problemen :(

Ik heb de man van grep bekeken maar ziet geen oplossing dus hetgenen dat ik wil is een manier om grep te gebruiken zodat ik alleen een true of false krijg zonder uitvoer.

Weet iemand iets?

Alvast hartelijk dank

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

kan grep dat dan :?
true/ false returnen?

--> [forum=23] :?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Op maandag 17 december 2001 09:41 schreef D2k het volgende:
kan grep dat dan :?
true/ false returnen?

--> [forum=23] :?
lijkt mij wel toch?

uhm als dit in het verkeerde forum is verplaats hem dan maar wist ook niet precies waar ik deze vraag moest deponeren :)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

hmmz ik zit hier ook ff te verzinnen
code:
1
2
3
4
5
6
7
8
if(grep blaat)
{
  return true
}
else
{
  return false
}

discl: ik roep maar wat

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Op maandag 17 december 2001 09:48 schreef D2k het volgende:
hmmz ik zit hier ook ff te verzinnen
code:
1
2
3
4
5
6
7
8
if(grep blaat)
{
  return true
}
else
{
  return false
}

discl: ik roep maar wat
Kijk bij die if (grep blaat) geeft ie al gelijk de uitvoer daarvan :( das het probleem

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

hmmz

* D2k is ff stil

hoe kan je de uitvoer verbergen zonder als te veel problemen

id:
als je nou eens de uitvoer naar /dev/null stuurt :?

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Op maandag 17 december 2001 09:51 schreef D2k het volgende:
hmmz

* D2k is ff stil

hoe kan je de uitvoer verbergen zonder als te veel problemen

id:
als je nou eens de uitvoer naar /dev/null stuurt :?
Ja dat heb ik wel is vaker gezien ja maar wat is dat dev/null nu eigenlijk? word dat ook gelijk gewist?

Want het gaat gebruikt worden in een en/de crypt scriptje dus ik wil eigenlijk niet dat de mensen de bestanden nog kunnen zien na die ene keer.

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op maandag 17 december 2001 09:53 schreef blaat101 het volgende:

[..]

Ja dat heb ik wel is vaker gezien ja maar wat is dat dev/null nu eigenlijk? word dat ook gelijk gewist?

Want het gaat gebruikt worden in een en/de crypt scriptje dus ik wil eigenlijk niet dat de mensen de bestanden nog kunnen zien na die ene keer.
/dev/null is de "prullenbak" of het oneindige leegte
alles wat je daarnaartoe stuurt zie je niet meer trug Afbeeldingslocatie: http://www.student.kun.nl/g.lasterie/fok/icons/christmas/puh2.gif
Maar het kan geen kwaad
doe maar eens ls -a en dan ls -a > /dev/null
dan zie je het vanzelf :)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Op maandag 17 december 2001 09:55 schreef D2k het volgende:

[..]

/dev/null is de "prullenbak" of het oneindige leegte
alles wat je daarnaartoe stuurt zie je niet meer trug [afbeelding]
Maar het kan geen kwaad
doe maar eens ls -a en dan ls -a > /dev/null
dan zie je het vanzelf :)
Ohw sorry stom van mij dit gaat niet werken :(

Want ik doe die grep nu juist op een bestand dat juist al bestaat (het tijdelijke gedecrypte bestand) dus het verhaal van /dev/null gaat hier niet op :(

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op maandag 17 december 2001 10:00 schreef blaat101 het volgende:

[..]

Ohw sorry stom van mij dit gaat niet werken :(

Want ik doe die grep nu juist op een bestand dat juist al bestaat (het tijdelijke gedecrypte bestand) dus het verhaal van /dev/null gaat hier niet op :(
hoezo niet :?
volgens mij ben ik je ergens in mijn uitleg kwijtgeraakt :).

Nog een keertje :?

Als je een grep doet grep blaat krijg je daarvan de uitvoer te zien. K? Maar als je grep blaat >/dev/null doet wordt het ook uitgevoerd maar zie je die uitvoer dus niet.

hoop dat je het nu een beetje beter snapt :)

<edit>
beloof nog steeds niet dat het werkt hoor !!

Doet iets met Cloud (MS/IBM)


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

* Janoz doet man grep en ziet het volgende:
Normally, exit status is 0 if matches were found, and 1 if no matches were found. (The -v option inverts the sense of the exit status.) Exit status is 2 if there were syntax errors in the pattern, inaccessible input files, or other system errors.
Waarom zou -v of -q of >/dev/null dan niet werken?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Op maandag 17 december 2001 10:03 schreef D2k het volgende:

[..]

hoezo niet :?
volgens mij ben ik je ergens in mijn uitleg kwijtgeraakt :).

Nog een keertje :?

Als je een grep doet grep blaat krijg je daarvan de uitvoer te zien. K? Maar als je grep blaat >/dev/null doet wordt het ook uitgevoerd maar zie je die uitvoer dus niet.


uhm er is zeker niets te doen aan het tijdelijk besta
hoop dat je het nu een beetje beter snapt :)

<edit>
beloof nog steeds niet dat het werkt hoor !!
uhm sorry stom van mij ik was me eigen uitleg geloof ik even kwijt :)

Ik heb het gedaan en getest en het werkt als een roosje :)
Thx man.

Nu heb ik alleen nog 1 klein history probleempje (merk ik net) ik zal zo even me scriptje posten misschien dat 1 van jullie iets weet want history op null zetten en vervolgens weer op die standaard groote van 100 werkt niet :(

maar voor de grep hartstikke bedankt

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op maandag 17 december 2001 10:08 schreef Janoz het volgende:
* Janoz doet man grep en ziet het volgende:
[..]

Waarom zou -v of -q of >/dev/null dan niet werken?
|:(

* D2k had de man page nog niet eens bekeken :)
alles hierboven is gewoon op de gok

maar bijna correct dus :)

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op maandag 17 december 2001 10:11 schreef blaat101 het volgende:

[..]

uhm sorry stom van mij ik was me eigen uitleg geloof ik even kwijt :)

Ik heb het gedaan en getest en het werkt als een roosje :)
Thx man.
post het nog ff dan

* D2k roeleert weer eens *D
Nu heb ik alleen nog 1 klein history probleempje (merk ik net) ik zal zo even me scriptje posten misschien dat 1 van jullie iets weet want history op null zetten en vervolgens weer op die standaard groote van 100 werkt niet :(

maar voor de grep hartstikke bedankt
dar heb ik geen oplossing voor :)

* D2k is ook nog redelijk linux n00b

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
uhm de -q kan dit solaris (geen linux :) )systeem niet en de -v krijg ik wel uitvoer bij maar dat maakt niet uit de grep werkt nu:

ok het scriptje is:

#!/bin/ksh
echo ""

if test -z "$1"
then
echo "Syntax: p wachtwoord zoekstring"
echo "(Hierbij is de zoekstring niet verplicht)"
else
crypt $1 < /var/home/eenuser/test.bestand > ~/bbb

if grep network ~/bbb > /dev/null
then

if test -z "$2" ;
then more ~/bbb;
else
echo "Uw zoek opdracht heeft de volgende uitvoer opgeleverd:"
echo " "
grep -i $2 ~/bbb;
fi

else
echo "Uw wachtwoord is onjuist"
fi

rm ~/bbb
fi

echo ""
exit

zow nou er van uitgaan dat het bestand het woord netwerk bevat (wat het altijd doet) werkt het prima alleen die history werkt niet

Verwijderd

Topicstarter
weet iemand hoe je de history onder ksh op 0 kan zetten? (tijdelijk dan)

in de man fc hebben ze het vaak over HISTSIZE en HISTFILE maar hoe kan ik die veranderen ?

ze hebben het vaak er over dat het een eviron commando is maar ik kan niet environ ofzo in de prompt aanroepen weet iemand misschien hoe?

alvast bedankt

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

Op maandag 17 december 2001 11:02 schreef blaat101 het volgende:
weet iemand hoe je de history onder ksh op 0 kan zetten? (tijdelijk dan)

in de man fc hebben ze het vaak over HISTSIZE en HISTFILE maar hoe kan ik die veranderen ?

ze hebben het vaak er over dat het een eviron commando is maar ik kan niet environ ofzo in de prompt aanroepen weet iemand misschien hoe?

alvast bedankt
dan is nu denk ik de tijd rijp voor [forum=23]
dat gaan we hier niet weten :)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Op maandag 17 december 2001 11:03 schreef D2k het volgende:

[..]

dan is nu denk ik de tijd rijp voor [forum=23]
dat gaan we hier niet weten :)
uhm ok daar een nieuwe post openen lijkt me uhm niet een aardige manier toch?

kan iemand hem dan verplaatsen?

  • zaphod_b
  • Registratie: Oktober 2001
  • Laatst online: 14-08 09:48
grappig dat nog niemand met de oplossing komt, terwijl het toch basic shell scripting is >:)

if(`grep blaat`)
{
return true
}
else
{
return false
}


kortom, je moet backquotes gebruiken. je wilt namelijk iets direct aan de shell geven, laten uitvoeren. de uitvoer daarvan is de waarde die je gaat evalueren.

wat je nu deed was het testen of de TEKST "grep iets file" true was. dat was ie dus altijd. niet praktisch. als je backquotes gebruikt test je de uitkomst van alles tussen die backquotes (dit wordt namelijk eerder uitgevoerd door de shell en het resultaat wordt ingevuld).

snappu? :P

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 18-08 10:02

TrailBlazer

Karnemelk FTW

ik zeg een dign leer perl. Op het moment dat je wil gaan greppen in een file leer perl. Perl kan veelmeer enveel makkelijker.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

done

Verwijderd

Topicstarter
Op maandag 17 december 2001 11:12 schreef zaphod_b het volgende:
grappig dat nog niemand met de oplossing komt, terwijl het toch basic shell scripting is >:)

if(`grep blaat`)
{
return true
}
else
{
return false
}



kortom, je moet backquotes gebruiken. je wilt namelijk iets direct aan de shell geven, laten uitvoeren. de uitvoer daarvan is de waarde die je gaat evalueren.

wat je nu deed was het testen of de TEKST "grep iets file" true was. dat was ie dus altijd. niet praktisch. als je backquotes gebruikt test je de uitkomst van alles tussen die backquotes (dit wordt namelijk eerder uitgevoerd door de shell en het resultaat wordt ingevuld).

snappu? :P
hehe ja ik snap het :)

dank je nu weet ik ook waarom het wel zo werkt :)

Verwijderd

Topicstarter
maarja....

nu zit ik nog steeds met die environ opties.
kunnen die alleen verandert worden dan als je echt die directorys aanmaakt met die bestanden? nee toch?

er zal toch ook wel een manier zijn om ze direct aan te roepen?

  • zaphod_b
  • Registratie: Oktober 2001
  • Laatst online: 14-08 09:48
Op maandag 17 december 2001 11:42 schreef blaat101 het volgende:
nu zit ik nog steeds met die environ opties.
kunnen die alleen verandert worden dan als je echt die directorys aanmaakt met die bestanden? nee toch?

er zal toch ook wel een manier zijn om ze direct aan te roepen?
dit moet je even duidelijker uitleggen, want ik snap geen hout van wat je hier nu bedoelt :P

  • rig0r
  • Registratie: Juli 2001
  • Laatst online: 11-03-2025
if [ `grep -c poep filename` -ne 0 ]; then
echo poep zit in filename !
fi

-c is et aantal keer dat je searchstring in de tekst voorkomt.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
waarom if gebruiken?

echo bla | grep piet || echo foo
en
echo bla | grep piet && echo foo

het statement na de || wordt alleen uitgevoerd als grep piet een non-zero return value geeft, en met && alleen als grep een zero-return value heeft.

dat doet hetzelfde als
if(`grep blaat`)
{
return true
}
else
{
return false
}

en de andere exotische oplossingen hier, maar dit is een stuk korter en leesbaarder : )

Verwijderd

Topicstarter
uhm tja...

De hele grep kwestie is al opgelost het script werkt nu gewoon goed.
Alleen mijn vraag was nu hoe het zat met de "history" onder ksh als ik iets in type dan word dat in een .sh_history opgenomen.
Maarja dat wil ik graag uit hebben op het moment dat je het script gaat runnen. (nouja de lijst clearen dan want alleen het bestandje verwijderen helpt niet)

en van de man history/fc word ik ook niet echt wijzer

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op maandag 17 december 2001 13:42 schreef blaataaps het volgende:
waarom if gebruiken?
Omdat als je meerdere statement wilt laten uitvoeren, het erg onduidelijk wordt met een || en/of && constructie.
Verder voer jij met jouw constructie grep twee keer uit, wat bij grote files inefficient is.
Pagina: 1