Strona Główna Unixy.pl
Internetowe forum na temat systemów GNU/Linux Unix

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload
 Ogłoszenie 
Strona korzysta z plików cookies w celu realizacji usług (logowanie do konta itp.). Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.

Poprzedni temat «» Następny temat
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  
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group