[ Mitrović Srđan @ 22.12.2003. 15:22 ] @
| zanima me nesto...kako da izvedem
npr pretpostavimo da napravim txt fajl sa podacima
ime: Srdjan
prezime: Mitrovic
tel: konj
zanimanje: bonsek
ime: mladen
prezime: somic
tel: mobilni
zanimanje: lenj
i nazovimo taj txt baza
e, sad ocu da napravim script iz koga ce se na zahtev usera izlistati podaci o zeljenom liku
znaci u scriptu za unos usera stavim
read IME
e sad kad sam ja pokusao npr
sa
grep $IME | awk '{ print $2 ]'
ono mi je logicki izbacilo 2 red ali samo tamo gde se grep poklapa
ja hocu da mi izbaci sve podatke o srdjanu npr ako je unos srdjan
to mu dodje ko neki adresar....
i da li bih mogao da koristim i upis u scripti za unos novih imena
sa npr
read NOV
cat >> baza
$NOV
e sad ovde mi samo upise u bazu $NOV jel postoji neki quote da dati blok $NOV racuna kao promenljivu sa onim sto sam ja probao isto je
u bem ti nadam se da neko razume....... |
[ kalkulus @ 22.12.2003. 22:03 ] @
mnogo ti je bolje da txt fajl bude u formatu
ime, prezime, tel, zanimanje
znaci umesto
ime: Srdjan
prezime: Mitrovic
tel: konj
zanimanje: bonsek
ime: mladen
prezime: somic
tel: mobilni
zanimanje: lenj
bude recimo
Srdjan::Mitrovic::konj::bonsek
mladen::somic::mobilni::lenj
gde sa ::(moze da bude bilo shta shto znash da se nece pojaviti u podacima) razdvajash podatke u liniji. iz ovakve linije cesh relativno lako izvuci shta treba, koji god programski jezik koristio
ako koristish awk onda mozesh da razdvajash podatke tabom, space-om ili cime vec shto awk prepoznaje kao razmak
[ anon676 @ 22.12.2003. 22:32 ] @
Ma sta se to cimas sa bashom uzmi u ruke perl i napisi ga lepo...ako ostanes pri svome probaj sa man egrep.
[ VRider @ 22.12.2003. 23:08 ] @
poslusaj kalkusa po pitanju promene formata baze.
Ako se odlucis za perl, mozes da koristis DBM, to ce ti jos vise olaksati posao.
[ B o j a n @ 22.12.2003. 23:26 ] @
ma sta k**** perl bre za ovakvu sitnicu:
file:
ime: Srdjan
prezime: Mitrovic
tel: konj
zanimanje: bonsek
ime: mladen
prezime: somic
tel: mobilni
zanimanje: lenj
nabrzaka skript ( popravi ako ti se ideja dopadne):
#!/bin/sh
test $? != 1; then echo "Usage: $0 file_with_db" && exit 11;
else
cat file | grep $1 | awk -F: '{print $2}';
=bc
[Ovu poruku je menjao dpanic dana 23.12.2003. u 17:59 GMT]
[ alex @ 22.12.2003. 23:47 ] @
Ajde, B o j a n e, ne brukaj se..
[ VRider @ 23.12.2003. 00:33 ] @
I meni se cini da ovo bas i ne radi. I da. Sta fali perlu?
Code:
#!/bin/bash
grep -A 3 -i "ime: $1" baza.txt
[ Mitrović Srđan @ 23.12.2003. 00:55 ] @
hvala probacu prvo sa kalkulosovom idejom....
[ popeye @ 23.12.2003. 01:52 ] @
Bash i podaci u txt datoteci nisu bas najbolji izbor. Dodavanje/uklanjanje korisnika ce postati komplikovano kada spisak naraste (pretpostavljam da ces i to raditi preko neke bash/awk skripte), pogotovo kada imas korisnike sa istim imenom.
VRider je dao dobar savet: perl i DBM.
[ Linux @ 23.12.2003. 11:05 ] @
Pozdrav,
Stvar moze da se uradi bilo kako i sa bilo cime, ali da odgovorimo onako
kako je postavljeno pitanje. Dakle:
Fajl treba da izgleda recimo ovako (test.txt):
perap:Pera Peric:Ulica i broj 2:011/123456
mikam:Mika Mikic:Ulica i broj 22:011/654321
mika:Mitko Mitkic:Ulica i broj 33:011/543253
Dok bi skripta koja bi zavrsavala posao bila (test.sh):
#!/bin/bash
# Ukoliko nije navedeno nista posle skripte izbacuje
# kratko uputstvo kako se koristi i izlazi
# dakle skripta trazi jedan parametar a to je korisnicko ime
if [ "$#" -lt "1" ]; then
echo "Uputstvo: $0 korisnicko_ime"
exit 0
fi
# Radimo grep koji je case-insensitive i match-uje kompletne reci (-w)
# iz fajla test.txt sa prvim parametrom koji je naveden skripti
# a to je username
PODATAK=`grep -i -w $1 test.txt`
# Ako je linija prazna, poruka je da ne postoji
if [ "$PODATAK" == "" ]; then
echo "Ne postoji takav korisnik!"
exit 0
fi
# Iz linije koju smo dobili vadimo podatke
# jer je znak : delimiter pa se cut komandom moze
# razdvojiti
USERNAME=`echo $PODATAK | cut -d ':' -f 1`
IMEPREZIME=`echo $PODATAK | cut -d ':' -f 2`
ULICA=`echo $PODATAK | cut -d ':' -f 3`
TELEFON=`echo $PODATAK | cut -d ':' -f 4`
# Na kraju izbacujemo na ekran podatke korisnika
echo ""
echo "Korisnicko ime: $USERNAME"
echo "Ime i prezime: $IMEPREZIME"
echo "Ulica i broj: $ULICA"
echo "Telefon: $TELEFON"
echo ""
Napomena: Ocekuje se da ce se skripti proslediti korisnicko ime kao
parametar posto je recimo ono jedino koje je unikatno za svakog
korisnika. Ovo je osnovno sto sam sastavio na brzinu, ali moze da se
prosiri tako da radi mnogo bolje.
Vuk.
"kalkulus" wrote:
> mnogo ti je bolje da txt fajl bude u formatu
>
> ime, prezime, tel, zanimanje
>
> znaci umesto
[ Mitrović Srđan @ 24.12.2003. 01:38 ] @
..e ovo je razumno hvala na pomoci...linux...i ostali
perl ce doci kasnije zelim da ovladam bash/awk/sed za sada pa tek onda predjem na
perl...imam jos par pitanja al sutra cu
hvala
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|