![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 2 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Mam problem, z którym borykam się od kilku dni. Mam kilka plików z dziesiątkami tysięcy linii do przerobienia. To pytania i odpowiedzi dla Mnemosyne - kurs angielskiego, który sobie wyeksportowałem z oryginalnego Supermemo (legalnej kopii - po prostu skończyłem z Windowsem a pod Linuksem nie dało się używać z oczywistych względów). Format danych w każdej linii jest identyczny i wygląda tak
Cytat jakiś_tekstTABjakiś_inny_tekst<br><sound src="PATH"> Mnemosyne odczytuje pojedynczą linię i wyświetla ją sformatowaną na podstawie występowania tabulatora. Część, która jest przed tabem jest wyświetlana w jednym oknie, a część po tabie w drugim pod naciśnięciu klawisza "pokaż odpowiedź" i dodatkowo odtwarza się plik dźwiękowy, do którego ścieżka jest po znaczniku <br> Niestety okazuje się, że muszę przenieść wszystkie ścieżki na lewą stronę tabulatora. Niby prosta operacja w edytorze tekstu CTR-A, CTR-X, CTR-V. Tylko przy ponad dwustu tysiącach linii robiłbym to z rok, albo i dłużej. Chciałem wyprodukować jakiś skrypt albo znaleźć komendę pod konsolą linuksową, która by to z automatu zrobiła. Ale poległem. Próby z sed nie przyniosły skutku (potrafię tylko kilka bardzo prostych rzeczy z jego pomocą zrobić) a programistą nie jestem. Czy wie ktoś jak się do tego zabrać? Będę wdzięczny za każdą pomoc. Ten post edytował qpanas 15.07.2009, 21:41:25 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 50 Dołączył: 28.10.2006 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
To znaczy jak ma to wyglądać?
Kod jakiś_tekst<br><sound src="PATH">TABjakiś_inny_tekst Z wyrażeniami regularnymi się można pobawić, tylko nie wiem czy jest sens używać do tego PHP - może wystarczy tylko edytor tekstu, który takie rzeczy obsługuje. Ja spróbowałbym tak:
To tylko przykład, ale można go użyć do tego co chcesz wykonać. Nie mniej jednak może się lekko wykrzaczyć przy 200k rekordów. Ten post edytował kipero 15.07.2009, 21:15:25 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 2 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
To znaczy jak ma to wyglądać? jakiś_tekst<br><sound src="PATH">TABjakiś_inny_tekst Dokładnie tak ma to wyglądać. Ja początkowo myślałem, żeby wstawić jakiś znacznik pomiędzy pierwszym tekstem i tabulatorem np. %&$ czy inny zestaw znaków, które nie występują w oryginalnym tekście, a potem kazać skryptowi wyszukiwać ścieżki tzn. cały fragment <br><sound src="PATH"> i wycinać a potem wklejać w miejsce tego znacznika. Skrypt musi to robić linia po linii bo jak przeniesie jakąś ścieżkę do innej linii to za diabła nie połapię się w tym i cały kurs angielskiego będzie do kosza. A ja muszę się uczyć języka. Ten post edytował qpanas 15.07.2009, 21:43:41 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Dodaj tag do tematu.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 50 Dołączył: 28.10.2006 Skąd: Radom Ostrzeżenie: (0%) ![]() ![]() |
No to możesz zastosować ten skrypt, który napisałem, ewentualnie otwórz ten plik w jakimś edytorze z obsługą wyrażeń regularnych. Ja do testów użyłem Notepad++ i dla tego edytora napiszę co i jak:
- otwierasz plik - menu "Szukaj"|"Zamień"(CTRL + H) - zaznaczasz tryb szukania na "Wyrażenia regularne" - w polu "Szukany tekst" wpisujesz: ([^\t]+)\t([^<]+)<br>(.*) - w polu "Zamień na": \1<br>\3\t\2 Na trochę może to zamulić kompa, ale działa(ja testowałem dla 14k rekordów i trwało dobrą minutę). Poza tym zrób sobie kopię pliku tej bazy, bo: Cytat jak przeniesie jakąś ścieżkę do innej linii to za diabła nie połapię się w tym i cały kurs angielskiego będzie do kosza
-------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 2 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki - postaram się nie zwalić tego ;-)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.07.2025 - 08:06 |