Baza danych ocen
Załóżmy że pliki bazodanowe z ocenami studentów mają nastepującą postać:
Adrian Warszawa Analiza 5
Adrian Lublin Algebra 4
Milosz Warszawa Geometria 4
Pawel Warszawa Analiza 4
Robert Kielce Geometria 3
Bolek Kielce Algebra 5
Oto baza danych. Przypuśćmy że umieszczono ją w pliku BAZA.
Język skryptów interpretera poleceń może służyć za język zapytań
do tej bazy:
- Ile jest ocen w bazie?
cat BAZA | wc -l
- Ilu jest studentów?
cat BAZA | cut -c1-6 | sort | uniq | wc -l
- Alfabetyczna lista przedmiotów?
cat BAZA | cut -c17-26 | sort | uniq | sort
- Ile jest ocen z poszczególnych przedmiotów?
cat BAZA | cut -c17-26 | sort | uniq -c
- Liczby ocen z poszczególnych przedmiotów posortowane wg
malejących liczb?
cat BAZA | cut -c17-26 | sort | uniq -c | sort -r
- Którzy studenci mają niejednoznacznie określone miasto
pochodzenia?
cat BAZA | cut -c1-15 | sort | uniq | cut -c1-6 |
uniq -c | grep -v "^1" | cut -c9-
- Ile jest ocen innych niż bardzo dobry?
cat BAZA | grep -v 5 | wc -l
- Ilu jest studentów z miast, których nazwy zaczynają się na K?
cat BAZA | grep ^.......K | cut -c1-6 | sort |
uniq | wc -l
- Wypisz dane pięciu najlepszych ocen z Algebry.
cat BAZA | grep Algebra | sort -r -k1.27 | head -5
Załóżmy teraz, że w drzewie katalogów wyrastajacym z katalogu DRZEWO jest
wiele takich baz danych o dowolnych nazwach.
- Ile jest ocen w tych wszystkich plikach?
cat Find DRZEWO | wc -l
- Ile jest piątek wystawionych w roku 2003?
(te oceny sa w plikach z rozszerzeniem 2003)
cat Find DRZEWO -name "*.2003" | grep 5 | wc -l
- Wypisz oceny studentów, które znajdują sią w plikach o
nazwach równych ich nazwiskom?
for p in Find DRZEWO -type f; do
if cut -c1-6 |
grep Basename $p >/dev/null ; then
cat $p |
grep Basename $p
fi
done
- Wypisz nazwę pliku z najwiekszą liczbą ocen.
wc -l Find DRZEWO -type f | sort | tail -1 | cut -c9-