ralf Napisano Kwiecień 26, 2006 Zgłoszenie Share Napisano Kwiecień 26, 2006 witam mam do napisania skrypt ktory ma usuwac z pliku html znaczniki chcialem zrobic to poleceniem sed piszac to w taki sposob: sed -e 's/<[^>]*>//g' "$par" > "$par.txt" problem jest w tym ze usuwa mi znaczniki ale tylko te ktore zaczynaja sie i koncza w tej samej lini probowalem tez usunac znaki nowej lini tez uzywajac sed w ten sposob sed -e 's/[\n \r]//g' "$par" > "$par.txt" zeby wzial caly plik jako jedna linie i wtedy usunal wszystkie znaczniki ale wtedy czasem nie kasuje nic a czasem wszystkow manualu nie moge znalez nic co by naprowadzilo mnie na blad dlatego prosze o pomoc Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Kwiecień 26, 2006 Zgłoszenie Share Napisano Kwiecień 26, 2006 problem jest w tym ze usuwa mi znaczniki ale tylko te ktore zaczynaja sie i koncza w tej samej lini Nie do końca rozumiem. Mógłbyś podać przykład z kodu, którego znacznika Ci nie usuwa? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ralf Napisano Kwiecień 26, 2006 Autor Zgłoszenie Share Napisano Kwiecień 26, 2006 Jak mamy przykladowy plik: <html> <head><title>tutaj jakies cos</title> <a href = "jakis.link.pl" target="_blank" > <p>tutaj jakis tekst<b>tu pogrubiony</b></p> </html> to nie usunie mi tego: <a href = "jakis.link.pl" target="_blank" > bo z tego co wiem sed bieze do bufora po jednej lini i jesli nie napotka > to nie usunie znacznika tak samo nie usunie mi komentarzy ktorych tez chcialbym sie pozbyc albo skryptow javy Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Kwiecień 26, 2006 Zgłoszenie Share Napisano Kwiecień 26, 2006 Jeśli nie zależy Ci na przejrzystości kodu HTML-a to zawsze pierwszą operacją którą wykonujesz może być usunięcie wszystkich enterów. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ralf Napisano Kwiecień 26, 2006 Autor Zgłoszenie Share Napisano Kwiecień 26, 2006 no ja wlasnie tak probowalem. na poczatku pisalem sed -e 's/[\n\r]//g' zeby mi usunal wszytkie znaki nowej lini albo returny ale nie che to dzialac bo moze jakos zle to pisze a zeby jednak bylo przejzyste to mozna najpierw te entery zamienic na jakis znak typu _ i pozniej juz po usunieciu znacznikow zamienic znowy _ na entery Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Kwiecień 26, 2006 Zgłoszenie Share Napisano Kwiecień 26, 2006 Teraz to zależy od tego w jakim formacie są robione Entery. Linux je robi postaci \n, a Windowsowe html-e będą miał \n\r Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ralf Napisano Kwiecień 26, 2006 Autor Zgłoszenie Share Napisano Kwiecień 26, 2006 no ale wlasnie jak mamy wyrazenie regulatrne postaci [\n\r] to jako wzorzec powinien wziasc albo \n albo \r albo \n\r prawda?? teraz probuje na rozne sposoby zamienic te znaki nowej lini na cokolwiek ale bez rezultatow ale chyba wiem w czym jest problem sed chyba nie najlepiej kojazy ze \n i \r to znaki nowej lini chociaz moze mi sie wydawac generalnie caly skrypt wyglada tak: #!/bin/bash echo "podaj nazwe pliku" read par touch "$par".txt sed -e 's/\n>/__/g' "$par" > "$pat.txt" #1 sed -e 's/<[^>]*>//g' "$par.txt" > "$par.txt" #2 i z samym poleceniem #2 usuwa tylko te zanczniki ktore zaczynaja sie i koncza w jednej lini #1 ma niby zamieniac znak nowej lini na __ ale kurcze nie zamienia Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
m_zaleczny Napisano Kwiecień 27, 2006 Zgłoszenie Share Napisano Kwiecień 27, 2006 Sed nie usuwa Ci znaków końca linii, ponieważ jest zorientowany liniowo tzn. przetwarza plik linia po linii i tekst który wypluwa także kończy znakiem 'n'. Jeśli chcesz usunąć z pliku tekstowego znaki końca wiersza, to bardzo łatwo możesz to zrobić przy pomocy perla. Poniżej masz przykład jak zapodać sedowi plik w jednej linii: cat plik | perl -e 'while (<>) { chop; print($_); }' | sed -e 'usuniecie_znacznikow_html_:)' Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ralf Napisano Kwiecień 27, 2006 Autor Zgłoszenie Share Napisano Kwiecień 27, 2006 juz sobie poradzilem z problemem chociaz nie do konca caly plik zapisalem do jenej lini poleceniem tr a znaki konca lini zaminilem sobie na znak o kodzie 1 pozniej usunolem wszystkie tagi ale zostaly jeszcze te zagniezdzone w komentarzach ale z tym sobei tez poradzilem pozniej ten znak 1 zamienilem na znaki nowej lini i wszytko jest ok dziekuje za pomoc i pozdrawiam 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ę