Strona 1 z 1

[bash] Wczytanie danych z pliku (2 linie) i kasowanie

: 05 wrz 2008, 14:09
autor: ojdas
Mam takie sobie skrypt:

Kod: Zaznacz cały

plik="baza.txt"
dane1=$(sed -n "1p" $plik)
dane2=$(sed -n "2p" $plik)
echo "$dane1"
echo "$dane2"
Jak zrobić aby z pliku baza.txt, który jest na bieżąco aktualizowany (dodawane nowe rekordy), i który ma takie dane:
ala ma kota
kot ma ale
jacek ma psa
pies ma jacka
[...]
dane były pobierane tylko raz:
ala ma kota
kot ma ale

i kasowane, czyli pobieranie zawsze 2 pierwszych aktualnych linii bez względu na ich długość, liczbę spacji, itp.?
Tak aby plik zawsze miał tylko te dane, które nie były wcześniej pobrane i przetworzone.

pzdr.
Piotr

Odp: [bash] Wczytanie danych z pliku (2 linie) i kasowanie

: 05 wrz 2008, 15:52
autor: [r4]
Uzyc bajeru w linuksowym systemie plikow, co sie zwie: plik specjalny FIFO. Ma wlasnie te magiczna wlasciwosc, o ktorej piszesz :) Mozna go utworzyc poleceniem

Kod: Zaznacz cały

mknod

Odp: [bash] Wczytanie danych z pliku (2 linie) i kasowanie

: 05 wrz 2008, 23:06
autor: ojdas
Próbowałem tak zrobić ale nie działa :(

Kod: Zaznacz cały

plik="baza.txt"
dane1=$(sed -n "1p" $plik)
dane2=$(sed -n "2p" $plik)
echo "$dane1"
echo "$dane2"
plik2="baza.txt"
deldane1=$(sed "1d" $plik2)
deldane2=$(sed "2d" $plik2)
echo > $plik2
Prośba o pomoc jak to można rozwiązać w przykładzie.

Odp: [bash] Wczytanie danych z pliku (2 linie) i kasowanie

: 07 wrz 2008, 00:20
autor: Procek
Z tego co mi wiadomo o FIFO to działa ono inaczej niż chce tego autor wątku. Autor potrzebuje czegoś w stylu stosu. Czyli można dodać wiersze tylko na początku pliku i ew. pobrać je również z początku. Jeśli nie o taki efekt chodzi to przepraszam za zamieszanie :)

Odp: [bash] Wczytanie danych z pliku (2 linie) i kasowanie

: 07 wrz 2008, 00:36
autor: marek_skwarek

Kod: Zaznacz cały

head -2 baza.txt
tail +2 baza.txt > wynik1
mv wynik1 baza.txt
wiem, że toporne, ale chyba o to chodzi.