eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › trochę NTG - edytor tekstowy z pracą na blokach tekstu
Ilość wypowiedzi w tym wątku: 20

  • 11. Data: 2014-08-05 16:35:27
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: slawek <f...@f...com>

    On Tue, 05 Aug 2014 16:00:23 +0200, Adam <a...@p...onet.pl> wrote:
    > Być może udało by się Awk "napompować" makrem, typu:

    Awk rozpoznaje wyrażenia regularne i odpala makra do pasujących. Do
    tego to jest całkiem ogólny język: if, for, łańcuchy znaków, ...

    W Linuksie Awk już jest, w Windows to jest jeden plik (kilkadziesiąt
    kb). Jest free z Gnu.

    Taki postprocessing po jakimś programie radośnie uzywajacym stdout to
    właśnie to po co wymyślono Awk.


  • 12. Data: 2014-08-05 17:37:40
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: Piotr Chamera <p...@p...onet.pl>

    W dniu 2014-08-05 15:26, Adam pisze:

    > Przykładowo, mam tekst podobny do:
    >
    > 1--1pass200.zip B 16080 960511 One-pass
    > 2--1seagate.zip B 499330 960403 Specs for
    > 3--22dsk144.zip B 232531 970802 CP/M<->Di
    > 4--2format.zip B 1650 881001 Format 2
    > ...
    > czyli jakieś dane ze stałą szerokością pól, ale bez znaczników pól.
    > Potrzebuję zaznaczyć prostokątny obszar pomiędzy polami,
    > i w zaznaczonym obszarze (i _tylko_ w nim) zamienić spacje na ";" - więc
    > efekt końcowy winien wyglądać następująco:
    >
    > 1--1pass200.zip ";" B 16080
    > 2--1seagate.zip ";" B 499330
    > 3--22dsk144.zip ";" B 232531
    > 4--2format.zip ";" B 1650

    To jest do zrobienia w Emacs za pomocą komend blokowych
    https://www.gnu.org/software/emacs/manual/html_node/
    emacs/Rectangles.html

    W tym wypadku po zaznaczeniu kolumny skrót: C-x r t <Ret> ";" <Ret>

    Albo prawie każdy edytor z wyrażeniami regularnymi
    np. w Emacs zamiana ^\(.\{17\}\) na \1";"
    czyli po 17 znaku w zaznaczonym regionie wstaw ";"

    > Druga możliwość to "rysowanie ramek kursorem".

    Nigdy nie używałem czegoś takiego, ale do Emacsa powinny bać do tego
    jakieś biblioteki - na szybko znalazłem
    http://www.emacswiki.org/emacs/rebox2
    do rysowania różnych stylów ramek dookoła komentarzy - powinno dać się
    użyć w tym przypadku.


  • 13. Data: 2014-08-05 18:11:59
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: A.L. <a...@a...com>

    On Tue, 05 Aug 2014 11:51:32 +0200, Adam <a...@p...onet.pl> wrote:

    >Witajcie!
    >
    >Szukam windowsowego edytora tekstu, który umożliwia pracę na blokach tekstu.
    >
    >Notepad++ umie zaznaczać bloki, ale już search/replace nie działa na
    >zaznaczonym bloku. Nie można też kursorem "rysować" ramek.
    >
    >Takie (i podobne) operacje umożliwiał dosowy edytor z pakietu Clariona.
    >
    >Jest takie coś pod Windows?

    EditPad (i EditPadPro) firmy JGSoft

    http://www.just-great-software.com/


    A.L.


  • 14. Data: 2014-08-05 22:43:08
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: "slawek" <h...@s...pl>

    Użytkownik "Adam" napisał w wiadomości grup
    dyskusyjnych:lrqm28$h5h$...@u...news.interia.pl...

    >Przykładowo, mam tekst podobny do:
    >
    >1--1pass200.zip B 16080 960511 One-pass
    >2--1seagate.zip B 499330 960403 Specs for
    >3--22dsk144.zip B 232531 970802 CP/M<->Di

    Uruchamiasz Notepad++, ctrl-H (czyli szukaj->zamień), przełączasz w tryb
    regex (czyli "wyrażenia regularne").

    Jako szukany tekst wpisujesz ^(.{16}).
    Jako tekst jaki ma być wpisujesz \1";"

    Uwaga: bez dodatkowych odstępów.

    Jak to działa? ^ to początek linii, kropka to dowolny znak, w nawiaskach {}
    wpisujesz ile razy ma być, nawiaski okrągłe potrzebne aby \1 domyśliło się
    czym ma być (tj. starym tekstem pasującym do wzorca wyszukiwania zapodanego
    w nawiasie). Kropeczka na końcu szukanego wzorca to po prostu spacja (ok,
    lepiej byłoby dać tam prawdziwą spację, ale tak też zadziała).
    Jak potrzeba można użyć \2 itd.

    Wygodniej byłoby jednak napisać (nie trzeba liczyć kolumn)

    Szukane (^\S*\s+?)\sB
    Zamienić na \1";"B

    Uwaga: duże-małe litery są ważne. Duże S to zupełnie coś odwrotnego niż małe
    s.

    Naturalnie można to zrobić w Awk (gawk to taki Awk który "przypadkiem" ma
    licencję GNU), co może być opłacalne jeżeli tych plików/linii/czegoś jest
    zetyliony. Odpalasz skrypt w bash, bash wywołuje awk ew. gawk, parę minut i
    zrobione. Jak się uprzeć może się samo uruchamiać o określonej godzinie.

    Co do EXCEL-a, ok, jest taki jaki jest. Ale zauważyłeś, że potrafi
    importować np. XML ? Wiesz także że jest coś takiego jak "tekst jako
    kolumny" (menu "dane" na wstążce)? - czytasz jak leci, a potem tym właśnie
    porządkujesz. Ewentualnie trochę pracy z VBA/funkcjami i będzie dobrze.



  • 15. Data: 2014-08-05 22:52:27
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: "slawek" <h...@s...pl>

    Użytkownik "slawek" napisał w wiadomości grup
    dyskusyjnych:53e141de$0$2162$6...@n...neostrada
    .pl...

    >Wygodniej byłoby jednak napisać (nie trzeba liczyć kolumn)

    >Szukane (^\S*\s+?)\sB
    >Zamienić na \1";"B

    Ok, czasem masz A, więc

    Szukane (^\S*\s+)(\S)\s
    Zamienić na \1";"\2




  • 16. Data: 2014-08-06 09:11:54
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: Bronek Kozicki <b...@s...net>

    On 05/08/2014 10:51, Adam wrote:
    > Witajcie!
    >
    > Szukam windowsowego edytora tekstu, który umożliwia pracę na blokach
    > tekstu.

    Sublime Text, zaznaczanie środkowym klawiszem myszki.



    B.


  • 17. Data: 2014-08-06 14:14:17
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: Adam <a...@p...onet.pl>

    W dniu 2014-08-05 22:52, slawek pisze:
    > Użytkownik "slawek" napisał w wiadomości grup
    > dyskusyjnych:53e141de$0$2162$6...@n...neostrada
    .pl...
    >
    > Jako szukany tekst wpisujesz ^(.{16}).
    > Jako tekst jaki ma być wpisujesz \1";"

    Tutaj wszystko jasne.
    Działa prawidłowo.

    >> Wygodniej byłoby jednak napisać (nie trzeba liczyć kolumn)
    >
    >> Szukane (^\S*\s+?)\sB
    >> Zamienić na \1";"B
    >

    Tu już nie bardzo rozumiem.
    U mnie (Notepad++ v. 6.5.1) nie działa ani pierwsze, ani drugie
    wyszukiwanie. Nigdy nie działałem na wyrażeniach regularnych, więc muszę
    trochę doczytać.

    Widzę to tak:
    \S* -> szukaj znaków "niepustych"
    \s+? -> szukaj spacji występującej jeden lub więcej razy
    nie wiem, co oznacza \sB -> z opisu "pusty string, lecz nie na początku
    lub końcu słowa"

    Samo "(^\S*\s+?)" działa, zaś "(^\S*\s+?)\sB" już nie :(


    > Ok, czasem masz A, więc

    Co to jest "A"?

    >
    > Szukane (^\S*\s+)(\S)\s
    > Zamienić na \1";"\2
    >

    Tu już szukania nie rozumiem. Najpierw jak wyżej, czyli "(^\S*\s+)" a
    potem dowolny znak i znak pusty?
    Nie działa.
    Działa tylko "(^\S*\s+)(\S)"

    Problem taki, że kolumny co jakiś czas przesuwają się w prawo.
    Drugi problem: czasami (np. w nazwach banków) występują po 3 spacje.
    Kolumn mam chyba ok. 30, czasem tekst jednej kolumny dochodzi (bez
    spacji, czyli "dotyka") do kolejnej kolumny.
    Oczywiście na początku, przed rozpoczęciem jakiejkolwiek pracy, muszę
    wyzamieniać wszystkie ["] i [;] na znaki neutralne.


    > Co do EXCEL-a, ok, jest taki jaki jest. Ale zauważyłeś, że potrafi
    > importować np. XML ? (...)

    Wiem o imporcie.
    Ale import Excelowy ma jedną wadę: duplikuje (potraja, poczwarza ;)
    itd.) wiersze dla pod-wystąpień gałęzi.

    Przykładowo:

    <Faktura nr="123/2014" DataWyst="14-02-01">
    <Tax vat="17.59" net="219.93" gross="237.52" vatRate="8%" />
    <Tax vat="25.56" net="511.2" gross="536.76" vatRate="5%" />
    </Faktura>

    Natomiast Excel pokaże:

    nr DataWyst vat net gross vatRate
    -- -------- ------ ------ ------ ----
    123/2014 14-02-01 17.59 219.93 237.52 8%
    123/2014 14-02-01 25.56 511.20 536.76 5%

    Przynajmniej wersja 2003.

    Dlatego w Excelu wolę importować przez VBA funkcją oXmlK.Load czy jak to
    tam było - wtedy uzyskuję jeden wiersz dla jednego dokumentu, w którym
    mam wszystkie wystąpienia stawek VAT.


    > Co do EXCEL-a, ok, jest taki jaki jest. Ale zauważyłeś, że potrafi
    > importować np. XML ? Wiesz także że jest coś takiego jak "tekst jako
    > kolumny" (menu "dane" na wstążce)? - czytasz jak leci, a potem tym
    > właśnie porządkujesz. Ewentualnie trochę pracy z VBA/funkcjami i będzie
    > dobrze.

    Jak pisałem, mam wersję 2003. Ona nie ma wstążek.
    Zaczynałem jeszcze od Quattro-Pro, przechodząc przez kilka wersji Excela.
    "Wstążki" są dla mnie niezrozumiałe ;)
    Dlatego nie instalowałem nowszych wersji Office, pomimo, że mam licencje.
    U żony jest v. 2010 z dodatkiem "starego menu" - gdyż też nie potrafiła
    znaleźć pozycji menu na wstążkach.


    Reasumując:
    Chyba w moim przypadku najefektywniej będzie w edytorze tekstu
    "wyprostować" kolumny, następnie tekst zaczytać do Excela z opcją bez
    separatorów, tylko opcją "stała szerokość" i ręcznie położyć znaczniki
    kolumn. Wtedy ewentualnie już nawet makrem mogę dodać "uszy" - czyli
    znaczniki pól tekstowych i zapisać całość jako CSV.



    --
    Pozdrawiam.

    Adam


  • 18. Data: 2014-08-06 14:37:06
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: Adam <a...@p...onet.pl>

    W dniu 2014-08-06 09:11, Bronek Kozicki pisze:
    > On 05/08/2014 10:51, Adam wrote:
    >> Witajcie!
    >>
    >> Szukam windowsowego edytora tekstu, który umożliwia pracę na blokach
    >> tekstu.
    >
    > Sublime Text, zaznaczanie środkowym klawiszem myszki.
    >


    Dzięki :)
    To jest już prawie to.

    Prawie, gdyż mogę zaznaczyć pionową kolumnę myszką i zrobić na niej
    search/replace, ale myszką to trwa długo, zaś dla pracy z kursorem nie
    działa replace - nie widzi zaznaczenia (zaznaczenie obejmuje kolumnę o
    zerowej szerokości). Ponadto dla operacji kursorem chyba nie ma skrótów
    typu "przeskocz na sam dół", tylko trzeba go gonić "na piechotę".

    Przyjrzę się - ten edytor spodobał mi się najbardziej z polecanych.


    --
    Pozdrawiam.

    Adam


  • 19. Data: 2014-08-06 14:59:33
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: slawek <f...@f...com>

    On Wed, 06 Aug 2014 14:14:17 +0200, Adam <a...@p...onet.pl> wrote:
    > U mnie (Notepad++ v. 6.5.1) nie działa ani pierwsze, ani drugie




    > nie wiem, co oznacza \sB -> z opisu "pusty string, lecz nie na
    początku

    Zaznacza opcję że mają być wyrażenia regularne. Domyślnie jest
    wyłączona.

    \sB to spacja (lub tab lub nowa linia) i najzwklejsza literka B .


  • 20. Data: 2014-08-07 20:45:45
    Temat: Re: trochę NTG - edytor tekstowy z pracą na blokach tekstu
    Od: Tomasz Sowa <t...@N...ttmath.org>

    Witam, dnia Tue, 05 Aug 2014 16:00:23 +0200
    Adam <a...@p...onet.pl> napisał:

    > > Oczywiście znasz Awk ?
    >
    > oczywiście, że nie znam ;)
    >
    > Ale z opisu wynika, że jest to mocne narzędzie do przetwarzania
    > tekstu. W moim przypadku - nie widzę zastosowania :(
    > Brak jakichkolwiek punktów zaczepienia.

    Masz punkt zaczepienia -- białe znaki (separatory).

    > Byłby dobry, gdybym chciał zmienić jeden separator na inny - a w moim
    > przypadku jest nieco inaczej. Jest do pewnego momentu stała szerokość
    > kolumn, później przesunięcie przez ileś wierszy, później znów
    > przesunięcie, przykładowo:
    >
    > NR data opis
    > -- -------- ----------
    > 1 14/08/01 RazDwaTrzy
    > 2 14/08/02 inny opis
    > 3 14/07/30 werewr
    > (...)
    > 10 14/07/23 przesuniecie
    > 11 14/08/02 i tak dalej

    To nie jest problem, poprostu separatorem jest biały znak i to wszystko
    (szerokości kolumn z tekstem cie nie interesują). Jedynie trzeba uważać
    na białe znaki w trzeciej kolumnie.

    Twój przykład:
    $ cat test.txt
    1 14/08/01 RazDwaTrzy
    2 14/08/02 inny opis
    3 14/07/30 werewr
    10 14/07/23 przesuniecie
    11 14/08/02 i tak dalej

    Z użyciem awk to może być tak:
    $ cat test.txt | awk '{ printf("%s \";\" %s ",$1,$2); sub(/([^ ]+)[ ]+([^ ]+)[
    ]+/,"",$0); print $0; }'
    1 ";" 14/08/01 RazDwaTrzy
    2 ";" 14/08/02 inny opis
    3 ";" 14/07/30 werewr
    10 ";" 14/07/23 przesuniecie
    11 ";" 14/08/02 i tak dalej
    To sub() to taka sztuczka aby wydrukować całą trzecią kolumnę, bez tego
    wydrukowałoby się tylko do pierwszej spacji w trzeciej kolumnie.

    Można też z użyciem seda:
    $ cat test.txt | sed -E 's/([^ ]+)[ ]+([^ ]+)[ ]+(.*)/\1 ";" \2 \3/'
    1 ";" 14/08/01 RazDwaTrzy
    2 ";" 14/08/02 inny opis
    3 ";" 14/07/30 werewr
    10 ";" 14/07/23 przesuniecie
    11 ";" 14/08/02 i tak dalej


    --
    Tomek


strony : 1 . [ 2 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: