jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

Witam!!!

Potrzebuje pomocy w napisaniu skryptu.

Jest sobie plik txt który wyglada tak:
tresc pliku:

Kod: Zaznacz cały

1235
123456
6542qq
4312
koniec tresci. poprostu w kazdej linijce jest jakies slowo.

Potrezbuje skryptu który bedzie robił cos takiego:
Jest pętal która wykonuje sie tyle razy ile linijek w pliku, jak sie skonczą linijki ma zaczynać sie od poćzątku.

Pętla dziala tak, 1 petala wczytuje 1 linijke z pliku i podstawia do zmiennej x, 2 przebieg petli wczytuje 2 linijke do zmiennej x, 3 prezbieg petli wczytuje 3 linijke do zmiennej x.

powiedzmy ze:
y=100 - ilość linijek w pliku

Kod: Zaznacz cały

for (i=0;i<=y;i++)
{
i tu potrzebuje wczytać linijke i'tą [i] z pliku txt i podstawic do zmiennej
następnie tętle zatrzymać na 30s (steep 30)
}
Potrzebuje takiego skryptu pod bash'a


Wiem ze to jest latwe dla kogos kto sie zna wiecprosze o pomoc.

-------------
// difrost: UŻWYAJ

Kod: Zaznacz cały

[/size][/b]
Ostatnio zmieniony 2007-03-01, 09:16 przez _Sheriff_, łącznie zmieniany 1 raz.
Awatar użytkownika
qpalzm
Użytkownik
Posty: 172
Rejestracja: 2006-12-10, 18:07
Lokalizacja: Zabrze

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: qpalzm »

Jest pętal która wykonuje sie tyle razy ile linijek w pliku, jak sie skonczą linijki ma zaczynać sie od poćzątku.
rozumiem ze ten skrypy na sie wykonych w nieskonczonosc ?
Pętla dziala tak, 1 petala wczytuje 1 linijke z pliku i podstawia do zmiennej x, 2 przebieg petli wczytuje 2 linijke do zmiennej x, 3 prezbieg petli wczytuje 3 linijke do zmiennej x.
Dlaczego petle maja wczytwac linijki tekstu bo nie rozumiem. Wiesz jak dziala petla ? Dla mnie osobiscie to bez sensu.

Napisz co ma robic ten skrypt, zamiast pisac jak jest zbudowany. Moze wtedy bede mogl pomoc
_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

sktypt mawczytywac kolejne linijki tekstu z pliku do zmiennej np x, ma to robic w pętli która ma sie wykonac tyle razy ile jest linijek w pliku, jak przeleci wszystkie linijki to ma zaczynać od początku to samo. I przed rozpoczeciem ise następnej petli ma być opuźnienie 30s.

Taki sktypt mi trzeba jak narazie, potem dołoże coś wiecej ale teraz trzeba mi tylko tyle. Prosze o pomoc
Awatar użytkownika
dawidmo
Użytkownik
Posty: 307
Rejestracja: 2006-08-24, 16:16
Lokalizacja: Pszczyna
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: dawidmo »

Kod: Zaznacz cały

#!/bin/sh

petla() {
for i in "`cat PLIK`"; do
    echo "$i"
done
    sleep 30 # opóźnienie 30 sekund
    petla
}

petla
Zmienna i przechowuje kolejne linijki pliku
Aby chciało mi się tak bardzo, jak mi się nie chce ;]
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: difrost »

@dawidmo, mały error: zamiast

Kod: Zaznacz cały

"`cat PLIK`"
powinno być

Kod: Zaznacz cały

$(cat PLIK)
bez "" !!!

EDIT -> Eeee...to przecież nie będzie działać, bo separatorem w liście (for) jest ' ', więc linia będzie się kończyć przy napotkaniu ' '.

@_Sheriff_ -- proponuję man sed :)
Ostatnio zmieniony 2007-03-01, 09:31 przez difrost, łącznie zmieniany 1 raz.
[url=http://bdtk.sourceforge.net][img]http://pin.if.uz.zgora.pl/~beton/bdt-ready.png[/img][/url] #337142
--------------------------------------------
"I had a letter in the post today. It said 'Gas Bill'. It sounds a tempting offer." -- Alan Cox
"Users have been trained that when a computer bluescreens and losing all of their data, it's either (a) just the way things are, or (b) it's microsoft's fault." -- Theodore Tso
Awatar użytkownika
dawidmo
Użytkownik
Posty: 307
Rejestracja: 2006-08-24, 16:16
Lokalizacja: Pszczyna
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: dawidmo »

Dokładnie difrost dlatego nie użyłem $(cat plik), bo nie działa. ;]
Aby chciało mi się tak bardzo, jak mi się nie chce ;]
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: difrost »

dawidmo pisze:Dokładnie difrost dlatego nie użyłem $(cat plik), bo nie działa. ;]
Ojj...dawidmo :) Notacja $(cat plik) jest dokładnie ekwiwalentem `cat plik` (a raczej na odwrót). Różnica jest tylko taka, że w '` `' nie można zagnieżdżać wywołać, a w $() można.
[url=http://bdtk.sourceforge.net][img]http://pin.if.uz.zgora.pl/~beton/bdt-ready.png[/img][/url] #337142
--------------------------------------------
"I had a letter in the post today. It said 'Gas Bill'. It sounds a tempting offer." -- Alan Cox
"Users have been trained that when a computer bluescreens and losing all of their data, it's either (a) just the way things are, or (b) it's microsoft's fault." -- Theodore Tso
_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

czyli jak w końcu ma byc?
Ja na poczatku bym zliczył linijki poleceniem x='cat plik | wc -l
amozecos takiego x=`cat plik | cut -d "^LF" -f $i`
ale nie wiem jak wczytać kolejne linijki tekstu.
Ostatnio zmieniony 2007-03-01, 09:41 przez _Sheriff_, łącznie zmieniany 1 raz.
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: difrost »

_Sheriff_ pisze:czyli jak w końcu ma byc?
Nie gorączkuj się :rotfl:

Kod: Zaznacz cały

cat << EOF > jakisplik
ghskohgas
ls;gjnoarh
oqengqp3 prqo
mg pq jnp p
ng poi jhioq
EOF

NRLINES=$(wc -l jakisplik)
export NRLINES=$(( $NRLINES + 1 ))
for i in $(seq -s ' ' 1 $NRLINES) ; do echo "Linia $i zawiera:" ; sed -n "${i}p"; done
[url=http://bdtk.sourceforge.net][img]http://pin.if.uz.zgora.pl/~beton/bdt-ready.png[/img][/url] #337142
--------------------------------------------
"I had a letter in the post today. It said 'Gas Bill'. It sounds a tempting offer." -- Alan Cox
"Users have been trained that when a computer bluescreens and losing all of their data, it's either (a) just the way things are, or (b) it's microsoft's fault." -- Theodore Tso
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: mina86 »

difrost pisze:bo separatorem w liście (for) jest ' ',
Nie, separatorem w liście for jest to co jest ustawione w IFS (o ile się nie mylę) i domyślnie jest to też np. znak przejścia do nowej linii.

Jakby nie patrzeć na sprawę: Ludzie! Opanujcie się, nie używajcie for var in ${cat "file"} do wczytywania linia po linii!!!

Kod: Zaznacz cały

while read x; do :; done <file
Nie ukrywam, że nie rozumiem co ma ten skrypt robić, ale powyższa linijka wczytuje po kolei linie pliku do zmiennej x.

-- dopisek --

OK, doczytałem jeszcze jeden post i oto jak skrypt będzie wyglądał:

Kod: Zaznacz cały

#! /bin/sh
while :; do
    while read x; do :; done <file
    sleep 30
done
Ostatnio zmieniony 2007-03-01, 09:58 przez mina86, łącznie zmieniany 1 raz.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

mina86 dzieki.

Jak juz mamy to, to teraz potrzebuje wstawić zmienna x do instrukcji wywolania programu

Kod: Zaznacz cały

aireplay -0 0 -a 23:34:43:12:34 -c $x ath0
Pytanie wktórym mniejscu stawić tą linijke i czy zadziała cały skrypt?

[ Komentarz dodany przez: Zielony: 2007-08-10, 21:58 ]
Code!
Ostatnio zmieniony 2007-08-10, 20:58 przez _Sheriff_, łącznie zmieniany 2 razy.
Awatar użytkownika
dawidmo
Użytkownik
Posty: 307
Rejestracja: 2006-08-24, 16:16
Lokalizacja: Pszczyna
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: dawidmo »

difrost pisze:Notacja $(cat plik) jest dokładnie ekwiwalentem `cat plik` (a raczej na odwrót).
Mimo wszystko `cat plik` i $(cat plik) wzięte w cudzysłów dopiero wyświetla poprawnie linia po linii, a nie rozdziela tego po spacji, ale jak napisał mina86 tak sie nie robi :-)
Aby chciało mi się tak bardzo, jak mi się nie chce ;]
_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

czyli to bedzie tak?

Kod: Zaznacz cały

#! /bin/sh
while :; do
    while read x; do :; done <file
    aireplay -0 0 -a 23:34:43:12:34 -c $x ath0 
    sleep 30
done
i jeszcze potrzeba mizeby jak przeleci wszystkie linijki w pliku, to by zaczeło odpoczątku, ja kto zrobic?
Awatar użytkownika
dawidmo
Użytkownik
Posty: 307
Rejestracja: 2006-08-24, 16:16
Lokalizacja: Pszczyna
Kontakt:

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: dawidmo »

_Sheriff_ pisze:i jeszcze potrzeba mizeby jak przeleci wszystkie linijki w pliku, to by zaczeło odpoczątku, ja kto zrobic?
Skorzystać z rekurencji

Kod: Zaznacz cały

#! /bin/sh
petla() {
while :; do
    while read x; do :; done <file
    aireplay -0 0 -a 23:34:43:12:34 -c $x ath0 
    sleep 30
done
petla
}
petla
Aby chciało mi się tak bardzo, jak mi się nie chce ;]
_Sheriff_
Użytkownik
Posty: 11
Rejestracja: 2007-03-01, 02:26

Re: jak napisac skrypt wczytajacy olejne linijki z txt w petli??

Post autor: _Sheriff_ »

Teraz kolejna rzecz, jak uruchomie program tym skryptem,
Jedziemy.
uchamiam skrypt.
wczytuje linijke z pliku
wstawia do komendy
uruchamia progam
program dziala 30s
po 30s przechodzimy do kolejnej petli
znow zczytuje linijke
NO I CO TERAZ ???
Program wlancza sie jeszcze raz z nowym parametrem a wczesniejszy przestaje dzialac? czy sie nakladaja? Czy po tych 30s trzeba zamknac program i wtedy przejsc do nastepnej petli i uruchomic go z nowym??
ODPOWIEDZ