eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › AWK FS z ukośnikiem
Ilość wypowiedzi w tym wątku: 20

  • 1. Data: 2009-05-21 19:05:07
    Temat: AWK FS z ukośnikiem
    Od: "slawek" <s...@h...pl>

    Mam pola rozdzielone przez backslash z dopisanym cell. Czyli w C byłoby to
    "\\cell".

    Kładę w AWK prosto jak tylko można BEGIN {FS = "\\cell"} i to nie działa.
    (Dwa backslashe)

    Natomiast daję BEGIN {FS = "\\\\cell"} i jest ok - choć nie rozumiem
    dlaczego. (Cztery backslashe)

    Pierwszy backslash powinien kazać interpretować drugi "literalnie". Czyli
    powinny wystarczać dwa - a muszę cztery.

    Jak się uprzeć, to FS=".cell" też działa (choć wolę nie, bo jeszcze zatnie
    się na np. "excellence".

    Czy ktoś wie co się dzieje (gawk)?

    slawek



  • 2. Data: 2009-05-21 19:18:20
    Temat: Re: AWK FS z ukośnikiem
    Od: somebody <a...@d...com>

    slawek pisze:
    > Mam pola rozdzielone przez backslash z dopisanym cell. Czyli w C byłoby
    > to "\\cell".
    >
    > Kładę w AWK prosto jak tylko można BEGIN {FS = "\\cell"} i to nie
    > działa. (Dwa backslashe)
    >
    > Natomiast daję BEGIN {FS = "\\\\cell"} i jest ok - choć nie rozumiem
    > dlaczego. (Cztery backslashe)
    >
    > Pierwszy backslash powinien kazać interpretować drugi "literalnie".
    > Czyli powinny wystarczać dwa - a muszę cztery.

    Jeśli chcesz zapisać jeden slash, to piszesz \\. Po to, żeby znak po
    jednym slashu nie był interpretowany jako specjalny.

    Gdybyś chciał zapisać ciąg abc\abc\abc w języku programowania, to
    potrzebujesz abc\\abc\\abc. A teraz usuń abc -> \\ (dwa slashe widzialne
    dla użytkownika) przechodzą na \\\\.

    To teraz pomyśl, jak wesoło jest, kiedy trzeba generować kod dla regexp
    w c++ np. w pythonie.

    pozdrawiam,


  • 3. Data: 2009-05-21 21:28:32
    Temat: Re: AWK FS z ukośnikiem
    Od: "slawek" <s...@h...pl>



    Użytkownik "somebody" <a...@d...com> napisał w wiadomości grup
    dyskusyjnych:1OhRl.61218$0...@n...ams2...
    > Jeśli chcesz zapisać jeden slash, to piszesz \\. Po to, żeby znak po
    > jednym slashu nie był interpretowany jako specjalny.

    A ty w ogóle to awk znasz? Bo widzę że nie teges...

    Właśnie napisałem 2x slash aby było że jest to jeden znak ukośnika
    wstecznego.

    Tyle że gawk ma tak jakby potem to jeszcze raz gdzieś pchał i interpretował
    i dopiero 4x robi mu dobrze. I to jest dziwne, bo według podręcznika to
    powinno wystarczać 2x.

    Ot i wsio.

    slawek



  • 4. Data: 2009-05-22 07:09:37
    Temat: Re: AWK FS z ukośnikiem
    Od: "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>

    On 21.05.2009, slawek wrote:
    >
    >
    > Użytkownik "somebody" <a...@d...com> napisał w wiadomości grup
    > dyskusyjnych:1OhRl.61218$0...@n...ams2...
    >> Jeśli chcesz zapisać jeden slash, to piszesz \\. Po to, żeby znak po
    >> jednym slashu nie był interpretowany jako specjalny.
    >
    > A ty w ogóle to awk znasz? Bo widzę że nie teges...
    >
    > Właśnie napisałem 2x slash aby było że jest to jeden znak ukośnika
    > wstecznego.
    >
    > Tyle że gawk ma tak jakby potem to jeszcze raz gdzieś pchał i interpretował
    > i dopiero 4x robi mu dobrze. I to jest dziwne, bo według podręcznika to
    > powinno wystarczać 2x.

    A ty w ogóle awk znasz? Bo widzę że nie teges... Którą zmienną ty
    modyfikujesz i co ona ma zawierać?

    --
    Stanislaw Klekot


  • 5. Data: 2009-05-22 07:59:32
    Temat: Re: AWK FS z ukośnikiem
    Od: "Marcin 'Qrczak' Kowalczyk" <q...@k...org.pl>

    On 21 Maj, 21:05, "slawek" <s...@h...pl> wrote:

    > Natomiast daję BEGIN {FS = "\\\\cell"} i jest ok - choć nie rozumiem
    > dlaczego. (Cztery backslashe)

    Bo jeden poziom interpretacji jest między źródłem programu a wartością
    stringa, a drugi -- między wartością stringa a jego znaczeniem jako
    wyrażenie regularne.


  • 6. Data: 2009-05-22 10:28:25
    Temat: Re: AWK FS z ukośnikiem
    Od: "slawek" <h...@s...pl>


    Użytkownik "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>
    napisał w wiadomości grup
    dyskusyjnych:s...@d...im.pwr.wr
    oc.pl...
    > A ty w ogóle awk znasz? Bo widzę że nie teges... Którą zmienną ty
    > modyfikujesz i co ona ma zawierać?

    Field Separator, czyli FS który jest zastrzeżoną zmienną dla awk. Pola mam
    rozdzielone przez "\\cell" (czyli jeden ukośnik i słowo cell). Na zdrowy
    rozum jeżeli FS zawiera separator pola, to powinno być FS="\\cell" . A
    tymczasem gawk chce mieć FS="\\\\cell" . Czyli jest jeden poziom
    interpretacji więcej.

    No cóż, albo `Dozzie` znasz awk (lepiej niż ja) - albo nie masz pojęcia o
    czym piszesz. Opis FS znajdziesz w podręczniku awk .

    slawek



  • 7. Data: 2009-05-22 10:32:21
    Temat: Re: AWK FS z ukośnikiem
    Od: "slawek" <h...@s...pl>


    Użytkownik "Marcin 'Qrczak' Kowalczyk" <q...@k...org.pl> napisał w
    wiadomości grup
    dyskusyjnych:2f3ec1d3-fbdd-48af-9ed2-611e709bcd2b@q1
    6g2000yqg.googlegroups.com...
    > Bo jeden poziom interpretacji jest między źródłem programu a wartością
    > stringa, a drugi -- między wartością stringa a jego znaczeniem jako
    > wyrażenie regularne.

    Czyli tak jak się domyślałem. Czyli jest dobrze.

    Dziękuję
    slawek




  • 8. Data: 2009-05-22 10:32:42
    Temat: Re: AWK FS z ukośnikiem
    Od: "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>

    On 22.05.2009, slawek wrote:
    >
    > Użytkownik "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>
    > napisał w wiadomości grup
    > dyskusyjnych:s...@d...im.pwr.wr
    oc.pl...
    >> A ty w ogóle awk znasz? Bo widzę że nie teges... Którą zmienną ty
    >> modyfikujesz i co ona ma zawierać?
    >
    > Field Separator, czyli FS który jest zastrzeżoną zmienną dla awk. Pola mam
    > rozdzielone przez "\\cell" (czyli jeden ukośnik i słowo cell). Na zdrowy
    > rozum jeżeli FS zawiera separator pola, to powinno być FS="\\cell" .

    Na zdrowy rozum jeżeli FS zawiera *regexp*, to znaki backslasha trzeba
    wycytować.

    > A
    > tymczasem gawk chce mieć FS="\\\\cell" . Czyli jest jeden poziom
    > interpretacji więcej.
    >
    > No cóż, albo `Dozzie` znasz awk (lepiej niż ja) - albo nie masz pojęcia o
    > czym piszesz.

    A teraz zgadnij, chłopcze, która to możliwość. Podpowiedź (a raczej
    pełną odpowiedź) Qrczak ci już dał w tym wątku.

    --
    Stanislaw Klekot


  • 9. Data: 2009-05-22 10:34:27
    Temat: Re: AWK FS z ukośnikiem
    Od: Mariusz Kruk <M...@e...eu.org>

    epsilon$ while read LINE; do echo \>"$LINE"; done < "slawek"
    >Field Separator, czyli FS który jest zastrzeżoną zmienną dla awk. Pola mam
    >rozdzielone przez "\\cell" (czyli jeden ukośnik i słowo cell). Na zdrowy
    >rozum jeżeli FS zawiera separator pola, to powinno być FS="\\cell" .

    Źle myślisz. Napis 'FS="\\cell"' przypisze do FS ciąg zaczynający się
    znakiem specjalnym "\c" (co zostanie zinterpretowane literalnie jako 'c'
    po prostu).

    --
    [------------------------] Bilety należy kasować przed zejściem(ZTM
    [ K...@e...eu.org ] Warszawa)
    [ http://epsilon.eu.org/ ]
    [------------------------]


  • 10. Data: 2009-05-22 10:43:22
    Temat: Re: AWK FS z ukośnikiem
    Od: "Stachu 'Dozzie' K." <d...@d...im.pwr.wroc.pl.nospam>

    On 22.05.2009, Mariusz Kruk wrote:
    > epsilon$ while read LINE; do echo \>"$LINE"; done < "slawek"
    >>Field Separator, czyli FS który jest zastrzeżoną zmienną dla awk. Pola mam
    >>rozdzielone przez "\\cell" (czyli jeden ukośnik i słowo cell). Na zdrowy
    >>rozum jeżeli FS zawiera separator pola, to powinno być FS="\\cell" .
    >
    > Źle myślisz. Napis 'FS="\\cell"' przypisze do FS ciąg zaczynający się
    > znakiem specjalnym "\c" (co zostanie zinterpretowane literalnie jako 'c'
    > po prostu).

    Nie do końca. W FS wyląduje ciąg `\cell', czyli taki jak oczekuje
    użytkownik. Tylko że jako regexp będzie szukać znaku specjalnego \c,
    czyli po prostu "c".

    --
    Stanislaw Klekot

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: