szöveges állomány editálása

Kezdőlap Fórumok Programozás szöveges állomány editálása

10 bejegyzés megtekintése - 1-10 / 14
  • Szerző
    Bejegyzés
  • #2088189
    lada2105
    Felhasználó

      nem csak awk-val lehet megoldani.
      cat filename | cut -f1 -d’ ‘
      ezzel megkapod az elsö oszlopát a fájlak, aholis az oszlopelválasztó a space karakter
      aztán innen darabolod
      egyik változó = cut -f1 -d’-‘
      másik változó = cut -f2 -d’-‘
      harmadik változó = cut -f3 -d’-‘
      aztán vissza a fájlba $egyik-$harmadik-$masodik
      még lehet ezután jönne egy sed, hogy a bemenö formátumú dátumokat cserélje ki a kiemnö formátumúkra

      Valami ilyesmi… bár elég brutális módszer, de müködik. 🙂

      Az awk nem rossz, csak nem értek hozzá, nem bírom megérteni és jó leírást sem találtam eddig hozzá.
      De ha te jobban tudod, megköszönném, ha hozzámvágnál egy linket vagy egy pdf-et.

      #2088190
      Sovi
      Felhasználó

        Awk-hoz még én sem találtam normális leírást amből megérteném, hogyan lehet használni hatékonyan. Pár dolgot tudok benne de az édeskevés.

        Ezt a módszert viszont kipróbálom. Köszönöm!

        #2088191
        Sovi
        Felhasználó

          Sikerült odáig eljutnom, hogy:
          – cat -el kiszűröm magamnak a szükséges oszlopot, egy egyszerű awk-ot írtam amivel át tudom alakítani a dátumformátumot…….most már csak annyit kéne, hogy a cat kimenetét átadjam az awk proginak és az awk progi kimenetét visszatöltsem a fileba az eredeti oszlopot felülírva…na erre nem jövök rá hogyan csináljam. Valaki tudna segíteni?? Köszönöm!

          #2088192
          ELaci
          Felhasználó

            Az awk pedig nem túl bonyolult.
            A feladat megoldása awk -al:

            Code:
            awk -F/ ‘{print $3 „-” $2 „-” $1}’ filename

            „-F” a mezőelválasztó: /
            a print gondolom ismert, a $1,$2,$3 az input mezőket jelöli

            A kódot nem próbáltam ki, de működnie kell.

            Szerk.:
            Utólag jöttem rá hogy az eredeti rekordban nemcsak ez a dátum van.
            Így a helyzet bonyolultabb, mert a teljes rekordot kezelni kell. Ismerni kellene a dátumok kezdő pozícióit a rekordban ha esetleg több is van és substr() -el kiemelni.
            Vagy sed is jó ha a dátumot valamilyen regexp-el fel lehet ismerni.

            ELaci

            #2088193
            Sovi
            Felhasználó

              Köszi, de ez a része már működik. Az egymás kimenetének átadását kéne megoldanom meg a fileba visszaírást.

              #2088194
              lada2105
              Felhasználó

                viszonylag egyszerü
                mivel megvan a kezdeti dátum, ezt eltárolod egy változóba,
                majd megkreálod az újat, aztán:
                sed s/$regidatum/$ujdatum/g > ujfile
                asszem
                és kész 🙂

                #2088195
                ELaci
                Felhasználó
                  Sovi wrote:
                  Köszi, de ez a része már működik. Az egymás kimenetének átadását kéne megoldanom meg a fileba visszaírást.

                  Az eset amikor a dátum pl. az 5. pozícióban kezdődik:

                  Code:
                  awk ‘{print substr($0,1,4) substr($0,11,4) „-” substr($0,8,2) „-” substr($0,5,2)  substr($0,13,length($0) – 16)}’ filenev > tempfile

                  (lehet hogy a pozíciókkal kicsit elszámoltam magam)

                  ELaci

                  #2088196
                  uzsolt
                  Felhasználó

                    Mi a francnank már megint agyonbonyolítani?

                    sed -i „s@([0-9]{2})[red]/[/red]([0-9]{2})[red]/[/red]([0-9]{4})@3-2-1@g” fájlnév

                    (a színezés csak a könnyebb olvashatóság kedvéért van)

                    #2088197
                    Sovi
                    Felhasználó

                      Köszönöm a tippeket. Most már menni fog.

                      #2088198
                      balev
                      Felhasználó

                        Valaki REGEX guru segítsen már légyszi!

                        MC-vel szeretnék szövegrészt cserélni, viszont nem meghatározott a tartalom, de két jel között van.

                        PHP-ben így csinálnám pl.:
                        ^$

                        MC-ben meg lehet adni, hogy reguláris kifejezés szerint keressen. Viszont nem ismerem a pontos szintaktikát, gondolom a PHP-s eregi és preg kicsit más, mint amit bash-ban, vagy MC-ben használni lehet.

                      10 bejegyzés megtekintése - 1-10 / 14
                      • Be kell jelentkezni a hozzászóláshoz.