kaspertk Napisano Sierpień 3, 2010 Zgłoszenie Share Napisano Sierpień 3, 2010 Witam. mam taki problem i nie wiem jak go rozwiązać. A mianowicie mam dwa pliki w jednym będzie tekst np. ala "" ma kota "" a kot ma "" ale a w drugim wartości lub słowa oddzielone ; np. dwa;01;34;ala I właśnie czy w bashu jest możliwość napisania czegoś takiego aby wczytać pierwszy tekst i zamienić pierwszy znak "" na pierwszy wyraz/cyfrę z drugiego pliku a następnie drugi znak na drugi wyraz/znak z drugiego pliku aż do końca pliku. Jeśli jest taka możliwość lub można to prościej zrealizować proszę o jakąś pomoc gdzie mogę coś na ten temat przeczytać aby rozwiązać ten problem, dodam że jestem zielony w tej dziedzinie. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
thof Napisano Sierpień 3, 2010 Zgłoszenie Share Napisano Sierpień 3, 2010 Da radę. Nie jestem fanem basha, dlatego nie napiszę Ci kodu (gdybym nawet znał dobrze basha to i tak tego bym nie zrobił), ale takie narzędzia jak awk, sed itp. bez problemu poradzą sobie z takim skryptem. Jak jesteś zielony to polecam dwa źródła wiedzy http://www.tldp.org/LDP/abs/html/ i http://www.gnu.org/software/bash/manual/bash.html . Po takiej lekturze machniesz od ręki taki skrypcik Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
borzole Napisano Sierpień 3, 2010 Zgłoszenie Share Napisano Sierpień 3, 2010 W dowolnym języku, załadować plik z podmienianymi danymi do tablicy, a na pliku wejściowym podmieniać dane przy użyciu wyrażeń regularnych. Całość zamknąć w przemyślanym algorytmie. Propozycja w bash: #!/bin/bash # jakieś tam pliki z danymi INPUT=/tmp/test_in.txt SWITCH=/tmp/test_switch.txt OUTPUT=/tmp/test_out.txt cat >$INPUT<<__EOF__ ala "" ma kota "" a kot ma "" ale __EOF__ cat >$SWITCH<<__EOF__ dwa;01;34;ala __EOF__ # ------------------------------------------------------------------------------ set_tab(){ # zmieniamy separator pól wejściowych na średnik local IFS=';' # ładujemy plik do tablicy TAB=( $(cat $SWITCH) ) } set_tab # pracujemy na kopii cat $INPUT > $OUTPUT # dla każdego elementu tablicy... for p in ${TAB[@]} do # podmień pierwszy napotkany tekst pasujący do wzorca # opcja "-i" wykonuje operację bezpośrednio na pliku sed -e 's/\"\"/'$p'/' $OUTPUT -i done # pokaż plik cat $OUTPUT na wyjściu dostaję: ala dwa ma kota 01 a kot ma 34 ale Nie podałeś zbyt wiele szczegółów. Gdybyś miał problemy, to opisz dokładniej przypadek. Bo teraz to nie wiem, czy starczy "słownika" na podmianę w tekście, czy słówek jest tyle samo. Dlatego pomyśl nad algorytmem i nie przepisuj bezmyślnie tego przykładu. Drugi mankament to szybkość tego rozwiązania. Dla każdego słówka plik jest otwierany od nowa. Trzeba by pogłówkować nad sed lub awk dla optymalizacji, choć wątpię by Ci to było potrzebne. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
kaspertk Napisano Sierpień 6, 2010 Autor Zgłoszenie Share Napisano Sierpień 6, 2010 Przepraszam że tak długo się nie odzywałem;/ Dziś siadłem nad tym co napisaliście i czytam właśnie o bashu i testuje, jak będę miał jakieś pytania pozwolę sobie jeszcze zapytać (na pewno będzie dużo pytań). Wielkie dzięki za ten skrypt jak również za linki. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się