file oszlop sorba tükrözése

Kezdőlap Fórumok Programozás file oszlop sorba tükrözése

10 bejegyzés megtekintése - 1-10 / 12
  • Szerző
    Bejegyzés
  • #1889602
    ktibi
    Felhasználó

      Hello,

      van egy adatsorom ilyen alakban, oszlopszeruen (1 db oszlop):

      0.001 + 0.0001i
      0.002 + 0.0002i

      Mondjuk van 1000 sor. Ezeket szeretnem oszlopszeruen elhelyezni a kovetkezo keppen:

      0.001 + 0.0001i 0.003 + 0.0003i …
      0.002 + 0.0002i 0.004 + 0.0004i …

      , azaz minden az oszlopban masodik sor utan levo kettes csoportot a sorba szeretnem irni egy szokozzel elvalasztva.

      Meg egyszerubben: az eredeti

      a
      b
      c
      d

      file_1.datbol

      a c …
      b d …

      alaku file_2.datot szeretnek.

      Gondolom awk, vagy sed alkalmas lenne erre, de nem ertek meg hozza…

      #2199585
      kisbetu
      Felhasználó

        Én nyitnék a dolognak két tempfile-t.
        Olvasgatnék kettesével…
        a -> temp1
        b -> temp2
        c -> temp1
        d -> temp2

        Aztán olvasni a kettőből…
        temp1 -> a
        temp2 -> c

        a, ,c -> output

        temp1 -> b
        temp2 -> d

        b, ,d -> output

        Persze aki tud kettőig számolni, az egy ciklusban is megcsinálhatja.

        #2199586
        ktibi
        Felhasználó

          Igen ez logikus, csak awk-ban kellene megvalositani… Tudsz egy kis kodot is adni ehhez?

          #2199587
          kisbetu
          Felhasználó

            Nincs kedvem most kódolni. Hulla vagyok.

            (Gyanús viszont, hogy awk-ban KELL!
            Csak nem házi feladat? Mondjuk, a hasznossága kábé pont annyi.)

            #2199588
            ktibi
            Felhasználó

              Nem hazi. Nem feltetlenul kell awk-ban, lehet sed is. Csak most ezeket probalom tanulgatni…

              #2199589
              uzsolt
              Felhasználó

                Remélem, tr is használható:
                $ cat proba
                a
                b
                c
                d
                e
                $ cat proba | tr "n" " "
                a b c d e
                $ cat proba | sed "{N ; s@n@ @g}"
                a b
                c d
                e

                Egyébként meg: gugli

                #2199590
                ktibi
                Felhasználó

                  Alakul, csak valami hasonlo kellene:


                  a
                  b
                  c
                  d

                  e
                  f
                  g
                  h

                  bol az alabbit


                  a e
                  b f
                  c g
                  d h

                  #2199591
                  uzsolt
                  Felhasználó

                    Na várj csak, akkor mit is akarsz? Minden második sort akarod egymás mellé? Vagy hogy?
                    Ha más nem, akkor szétszeded a fájlodat külön fájlokra, majd ezután a join parancs lesz a te barátod.

                    #2199592
                    ktibi
                    Felhasználó

                      Van egy data.dat ban oszlopszeruen adatsor egymas alatt folytonosan (azaz nincs kozottuk semmilyen whitespace karakter: se szokoz, se vesszo, se semmi), ahogy az elozo postban. Na most mondjuk ebbol az adatsorbol van 16 darab sor 1 oszlopban. Ekkor negyesevel szeretnem szetszedni az oszlopbeli adatokat es ezeket egymas melle tenni mondjuk egy ” ” szokozzel elvalasztva, igy:


                      1
                      2
                      3
                      4
                      5
                      6
                      7
                      8
                      9
                      10
                      11
                      12
                      13
                      14
                      15
                      16

                      ez lenne a vegeredmeny:


                      1 5 9 13
                      2 6 10 14
                      3 7 11 15
                      4 8 12 16

                      #2199593
                      uzsolt
                      Felhasználó

                        Szóval ezt akarod?
                        $ seq 100 > proba

                        $ cat proba
                        1
                        2
                        3
                        4
                        ....

                        97
                        98
                        99
                        100

                        $ for i in 1 2 3 4; do echo ; sed -n "$i~4 p" proba | tr "n" " "; done ; echo

                        1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89 93 97
                        2 6 10 14 18 22 26 30 34 38 42 46 50 54 58 62 66 70 74 78 82 86 90 94 98
                        3 7 11 15 19 23 27 31 35 39 43 47 51 55 59 63 67 71 75 79 83 87 91 95 99
                        4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100

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