BASH -skrypt pomoc |
Autor |
Wiadomość |
Toudi
Dołączył: 27 Kwi 2010 Posty: 6
|
Wysłany: 2011-07-04, 12:27 BASH -skrypt pomoc
|
|
|
witam
potrzebuje sprytnego polecenia badz skrypciku ktory poustawia mi dane
mam plik z danymi np:
....
A
B
B
B
...
A
B
B
....
i potrzebuje miec
A B
A B
A B
...
A B
A B
itd
czyli jezeli w pliku pojawi sie A to ma pokazywac A B az do momentu napotkania nastepnego A itd (B zawsze pojawia sie po A)
dzieki za pomoc |
Ostatnio zmieniony przez Toudi 2011-07-04, 12:27, w całości zmieniany 1 raz |
|
|
|
 |
Maciek_Rutecki
Administrator
JID: [email protected]
Pomógł: 39 razy Dołączył: 07 Cze 2005 Posty: 2959
|
Wysłany: 2011-07-04, 16:06
|
|
|
Do końca nie rozumiem co chcesz zrobić, ale:
1. Musisz czytać plik linia po linii:
http://en.kioskea.net/faq...le-line-by-line
2. gdy w linii n-tej jest A to wyświetl/przekieruj do pliku A B
http://www.faqs.org/docs/...WTO.html#ss11.2
Toudi napisał/a: | czyli jezeli w pliku pojawi sie A to ma pokazywac A B az do momentu napotkania nastepnego A itd (B zawsze pojawia sie po A) |
1. A jak się nie pojawi to co?
2. A jak się w koncu pojawi następne "A" to co?
Musisz najpierw sam określić czego oczekujesz. Wróżka ma wakacje.
Reszta należy do Ciebie (sesja?). |
_________________ Maciek
http://www.maciek.unixy.pl |
|
|
|
 |
Toudi
Dołączył: 27 Kwi 2010 Posty: 6
|
Wysłany: 2011-07-04, 16:30
|
|
|
to jeszcze raz
mam plik z danymi, ktore poprzedzone sa stalym identyfikatorem
A ; dane1
B ; dane
B ; dane
A ; dane2
B ; dane
i takich schenatow jest duz0, wynikiem ma byc
A ; dane1 ; B ; dane
A ; dane1 ; B ; dane
A ; dane2 ; B ; dane
"dane" oczywiscie sa rozne chodzi o zasade ze jak jest A i po nim B to pisz A B az spotkasz nasteny A, jak spotkasz nastepne A to pisz nowe A (napotkane) i B po nim wystepujace a jak po B nie ma A tzn koniec pliku, zakoncz
jezeli wystapi A to rowniez wystapi B
dzieki za link juz dzwoni ale jeszcze nie wiem dokladnie gdzie
tak sesja |
Ostatnio zmieniony przez Toudi 2011-07-04, 16:31, w całości zmieniany 1 raz |
|
|
|
 |
Maciek_Rutecki
Administrator
JID: [email protected]
Pomógł: 39 razy Dołączył: 07 Cze 2005 Posty: 2959
|
Wysłany: 2011-07-05, 21:59
|
|
|
Prawie gotowe:
in.txt:
Kod: | A ; dane1
B ; dane
B ; dane
A ; dane2
B ; dane
EOF |
skrypt script.sh:
Kod: | #!/bin/bash
echo enter input file name
read fname
echo enter output file name
read outname
rm -fr $outname
exec<$fname
while read line
do
case "$line" in
A*)
begin_string="$line"
continue
;;
*)
begin_string="$begin_string"
second_string="$line"
echo "$begin_string ; $second_string" >> $outname
;;
esac
done |
Wynik działania skryptu:
Kod: | maciek@gumis:~/Desktop$ ./script.sh
enter input file name
in.txt
enter output file name
out.txt
maciek@gumis:~/Desktop$ |
plik wyjściowy:
Kod: | A ; dane1 ; B ; dane
A ; dane1 ; B ; dane
A ; dane2 ; B ; dane |
A co należy do Ciebie jako praca domowa:
1. skrypt olewa ostatnią linikę pliku wejściowego (stąd EOF)
2. Czy aby na pewno działa zawsze?
3. Co jeśli pierwsza linijka nie zawiera A?
4. Co jeśli gdzieś jest pusta linia? |
_________________ Maciek
http://www.maciek.unixy.pl |
Ostatnio zmieniony przez Maciek_Rutecki 2011-07-05, 22:07, w całości zmieniany 1 raz |
|
|
|
 |
|