Strona 1 z 1

[+] bash - skrypt zabawa z plikiem

: 12 stycznia 2011, 15:59
autor: sethiel
Mam plik spis:

Kod: Zaznacz cały

cat ./spis
jeden,123,123,jeden
piec,dwa,dwa,dwa,dwa,dwa
oko,trzy,1
szyja,
szafa,555,5555,555
Chciałbym uzyskać efekt (póki co) wyświetlenia na ekranie[INDENT]jeden
jeden,123,123,jeden
tralala[/INDENT][INDENT]pięć
pięć,dwa,dwa,dwa,dwa,dwa
tralala[/INDENT][INDENT]oko
oko,trzy,1
tralala[/INDENT]i tak dalej przez wszystkie linijki w pliku.

Usiłuję to zrobić na dwa sposoby ale coś mi nie wychodzi:

Kod: Zaznacz cały

for param in $(cat ./spis); do
    odcinek=echo $param
    tekst=echo $param | awk -F "," '{print $1}'
    echo "$odcinek"
    echo "$tekst"
    echo "tralala"
done

for param in $(cat ./spis); do
    odcinek=echo $param
    tekst=$(echo $param | exec cut -d ',' -f1)
    echo "$odcinek"
    echo "$tekst"
    echo "tralala"
done

: 12 stycznia 2011, 21:44
autor: piter

Kod: Zaznacz cały

for param in $(cat ./spis); do
        odcinek=$param
        tekst=`echo $param | awk -F "," '{print $1}'`
        echo $tekst
        echo $odcinek
        echo tralala
        echo
done
Zajrzyj tu:
http://bash.0x1fff.com/zmienne-programowe

: 13 stycznia 2011, 17:55
autor: lessmian2
A po co tak kombinować?

Kod: Zaznacz cały

awk -F',' '{print $1"\n"$0"\ntralala\n"}' spis
I to

Kod: Zaznacz cały

for param in $(cat ./spis); do
jest naprawdę paskudne ;)

: 13 stycznia 2011, 21:00
autor: sethiel
Dzięki.
Jeszcze w tak zwanym międzyczasie znalazłem, że właśnie bardzo nieładnie używać for, tylko powinno się używać while.
Pewnie jak ktoś dłużej pisze skrypty to wie dlaczego.
A jako, że musiałem puścić spam sam do siebie przedwczoraj w nocy to wyszło jeszcze inaczej:

Kod: Zaznacz cały

while read line
    do
    linijka="`echo -e "$line\n"`"
    adres="`echo $linijka | awk -F "," '{print $1}'`"
    wiadomosc="`cat ./postponed`"
    echo -e "$wiadomosc\n$linijka MB\n\nPozdrawiam\n"  | msmtp --host=smtp-domena.ogicom.pl --port=587 -f test@domena.pl $adres
    #echo "adres: $adres"
    #echo "tralala"
    done < ./sp