Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak automatycznie wyciąć fragmenty tekstu z pliku tekstowego?

8850 31 Gru 2017 20:17 525 11
  • #1 31 Gru 2017 20:17
    8850
    Poziom 21  

    Witajcie. Proszę o Waszą pomoc przy rozwiązaniu zadania. Mam plik .txt w których zrobiłem sobie bazę danych tel. kom. moich klientów z opisem tego co było u nich montowane. Chciałbym przejechać plik jakimś skryptem lub innym mechanizmem który wytnie mi wszystkie dane i zostawi same nr telefonu. Na co dzień używam windows10, ale jeśli trzeba to i pojawi się linux z jakieś płyty bootowalnej. Czy możecie mi pomóc?

    Postać źródłowa pliku .txt wygląda przykładowo poniżej, zawiera czasami polskie ogonki, linijek z tekstem czasem jest więcej, ale nr telefonu zawsze zaczyna się w taki sposób

    Code:

    08/12/2017|| +- 698279221 warszawa, oś. widokowe 9/16 montaz okna systemowego nr 21

    08/12/2017|| ++ 628683482 warszawa, debnicka 17, montaz okna wraz z framugami typu 2 roaz 18. brak dojscia,

    01/12/2017|| +- 506152062 warszawa, zakopisnaska 14/3 , montaz odwolany na skutek braku warunkow

    01/12/2017|| -- 500370883 bydgoszcz, mila 7, kontakt za 2 gygodnie

    Chciałbym otrzymać taki wynik w tym samym lub innym pliku (obojętnie):
    Code:

    698279221
    628683482
    506152062
    500370883

    0 11
  • #2 31 Gru 2017 20:35
    krzysiozak
    Poziom 34  

    Pierwszy lepszy edytor tekstu np: notepad++.
    I kombinacja klawiszy Shift+Alt i strzałkami lub myszką zaznaczyć tekst.
    I skopiować Ctrl+C.
    I wkleić w odpowiednim miejscu Ctrl+V.

    0
  • #3 31 Gru 2017 20:40
    8850
    Poziom 21  

    Wpisów jest ok. 400. Na przykładzie widać tylko 4 rekordy (telefony), wolałbym to zautomatyzować nie ręcznie, tym bardziej że czasem opisu do jednego klienta jest więcej niż jedna linijka.

    0
  • #5 31 Gru 2017 20:56
    drobok
    Poziom 27  

    Co do excela, można użyć spacji jako separatora kolumn.
    Co do notepad++ zaznaczasz wyrażenia regularne i wpisujesz jak w obrazku
    Jak automatycznie wyciąć fragmenty tekstu z pliku tekstowego?
    Potem replace all (w obrazku ma być 16, a nie 15)
    //edit
    dla wielu linijek z opisem zamieniasz
    .{16}(\d{9}).+(\r\n{1}.*(\r\n)*)
    na
    \1\n

    0
  • #6 31 Gru 2017 21:44
    8850
    Poziom 21  

    @drobok: dziękuję za pomoc. Exela mam tylko w wersji 2007, te stałe wielkości pół mogą być problemem. Używam notepad++ v.7.5.3 w wersji PL, przy
    Przy użyciu funkcji zamień wszystko:

    Code:

    .{15}(\d{9}).+(\r\n{1}.*(\r\n)*)

    na

    \1\n

    wyrzuca błąd:
    Code:

    "Replace alt 0 occourrences were replaced"

    Załączyłem do tej wiadomości przykładowy ciut większy fragment mojej bazy, czy mógłbyś sprawdzić uprzejmie gdzie leży błąd? Acha, wszystkie numery tel. jakie wrzucam do sieci na forum zawierają błąd bo mają pozmieniane cyfry dlatego dzwonić nie dodzwonimy się tam gdzie trzeba :).
    test_ba...txt Download (1.72 kB)

    0
  • Pomocny post
    #7 31 Gru 2017 21:54
    drobok
    Poziom 27  

    Z braku znaku nowej linii ostatnia linia się nie poprawiła. Reszta jest jak powinna. Jesteś pewien, że zaznaczyłeś "Regular expression" na dole ?
    Poza tym excel 2007 nie powinien mieć z tym problemów (chyba, że o czymś nie wiem), nawet jak wkleisz swój plik do akusza google (ctrl+c/v) to jak klikniesz na tą ikonkę co się po wklejaniu pojawia i dasz text, to też łapie bez problemu (tyle, że nie obsługuje nowych linii)
    //edit, znalazłem jeden błąd (zamiast 15 ma być 16 bo wycina za mało z początku i zostają 10cyfrowe numery, poprawiłem u góry)

    0
  • #8 31 Gru 2017 22:40
    8850
    Poziom 21  

    @drobok: coś nadal jest nie tak, zobacz, używam tego co poprawiłeś:

    Code:

    .{16}(\d{9}).+(\r\n{1}.*(\r\n)*)

    na

    \1\n

    Mamy inne wersje notepad++? plik załaczony ten sam test_baza1.txt

    Jak automatycznie wyciąć fragmenty tekstu z pliku tekstowego?

    Ponadto: Po zaznaczeniu "Wyrażenia regularne" i dalej "[ ] wskazuje nową literę.." - z całego dokumentu wyciąga tylko pierwszy numer telefonu, wszystko inne kasuje:

    Jak automatycznie wyciąć fragmenty tekstu z pliku tekstowego?

    test_ba...txt Download (1.72 kB)

    0
  • #9 01 Sty 2018 09:14
    drobok
    Poziom 27  

    nie działa, bo masz zaznaczone match new line

    0
  • #10 01 Sty 2018 09:43
    PiotrPitucha
    Poziom 33  

    Witam
    Importujesz do Excela ze spacją jako separator, dostaniesz telefony w jednej z kolumn.
    Usuwasz zbędne kolumny.
    Eksportujesz do pliku tekstowego.
    Wszystko trwa krócej niż napisanie jekiegokolwiek skryptu.
    Pozdrawiam

    0
  • #11 01 Sty 2018 10:09
    PDT
    Poziom 24  

    linux i takie polecenie:

    Code:

    prompt$ fromdos <test_baza1.txt | cut -d\  -f3 | sed -e '/^$/d'
    698050824
    726309432
    693442322
    698579311
    698283081
    502453060
    500320883
    601422898
    502304693
    502836364
    794794851
    600320210
    602417044
    prompt$

    fromdos zamienia CR+LF na LF
    cut wybiera pożądaną kolumnę wyniku
    sed wycina puste linijki

    0
  • #12 01 Sty 2018 20:05
    clubs
    Poziom 29  

    Witam
    Prosty bat dla twojego pliku "test_baza1.txt"

    Kod: dos
    Zaloguj się, aby zobaczyć kod

    0