Tablazatba rendezni adatokat

Asszem, kellene egy kulon topicot inditanom, mert ha megg akarok oldani valamit scriptben, mindig beleutkozom a korlataimba...es ez egyre gyakoribb.

Jelen pillanatban az alabbi problemam van, ha valakinek van otlete, kerem, segitsen:

Adott egy bazi nagy text file, ami igy nez ki:
x11
x12
x13
x14
x15
y11
y12
y13
y14
y15
x21
x22
x23
x24
x25
y21
y22
y23
y24
y25
stb
Szoval van ot sor ilyen, alatta ot sor olyan.
Ugy szeretnem vmivel szetszedni, hogy igy nezzen ki:
x11 y11
x12 y12
x13 y13
x14 y14
x15 y15
x21 y21
x22 y22
x23 y23
x24 y24
sit.

Tudna nekem erre valaki egy sciptet mondani?
Meg annyit, hogy mar ez is valogatas eredmenye, ar eredetiben
sok *.php file van a konyvtarban es abbol szedtem ki egy file-ba ezeket igy:

for i in *
do
grep "void(szavaz" $i | cut -b 16-100 >> Gyujtes
grep "./kep" $i | cut -b 60-100 >> Gyujtes
done
uniq Gyujtes > Gyujtes2

Ez meg csak a problema egyike fele, mert ezek a kepek csak indexkepek zip file-okhoz, szoval majd valahogy ugy akarom kibontani, hogy az "x11" nevu filet az "y11" directoryba bontsa ki. De azt talan megoldom, most ezt lenne jo tudni, hogyan tudom tablazatos formaba rendezni az ilyen szoveget.

Hozzászólások

"Tudna nekem erre valaki egy sciptet mondani?"

persze :-)


#!/usr/bin/env ruby

file = open(ARGV[0])

col0 = Array.new
col1 = Array.new
file.each_line do |l|
        if l =~ /^x.*/
                col0 << l.chomp
        elsif l =~ /^y.*/
                col1 << l.chomp
        end
end

col0.length.times do |i|
        puts "#{col0[i]} #{col1[i]}"
end

szerk: harmadszorra csak sikerult befejezni :)

-. . - -... ... -..

Aha, ruby. Aztatat nem ismerem. De koszi, kiprobalom.
Ha jol ertem, az "x"-szel kezdodo sorokra vonatkozik az elso feltetel.
Ez alapjan mar talan at tudom alakitani nekem megfelelore.
(A gond az, hogy nem "x" a kezdet, hanem mas, es sajnos az eredeti
file keszitesekor a cut byte-hataron vagott, tehat egesz maskent kezdodik
a sor, nem mindig ugyanugy. De kiindulasnak nagyon koszi!)


#!/bin/sh

while read x1; do
  read x2
  read x3
  read x4
  read x5

  read y1
  read y2
  read y3
  read y4
  read y5

  echo $x1 $y1
  echo $x2 $y2
  echo $x3 $y3
  echo $x4 $y4
  echo $x5 $y5
done <<END
x11
x12
x13
x14
x15
y11
y12
y13
y14
y15
x21
x22
x23
x24
x25
y21
y22
y23
y24
y25
END

#

Jó bonyolult lett. :-)))

> Ha jol ertem, ezt az eredeti file elejere kellene beszurnom.

Nem jól érted. A könnyű tesztelhetőség miatt néz ki így.

> A gond ott van vele, hogy kb 500 sor van,

5-öt kértél, 5-öt kaptál: "Szoval van ot sor ilyen, alatta ot sor olyan."

> es ha azt mind felsorolom a read es echo argumentumakent, ennyi erovel kezzel is sorba rendezhetem :)

Logikus: akkor ne így csináld :-)

Szia,
Bash megoldás az általad adott inputra. DEBUG=1 ha lepesenkent akarod latni mi tortenik, igy at is tudod gyúrni.
Tesztelve, működik, olyan outputot ad amit szeretnél.

hasznalat :
valami.sh gyujtottcucc.txt


#!/bin/sh
i=0
j=0
p=5
DEBUG=0
for s in `cat $1`
do
        [ $DEBUG -eq 1 ] && echo +
        if [ $i -lt $p ]; then
                let i=i+1
                s[$i]=$s
                [ $DEBUG -eq 1 ] && echo i $i
        else
        if [ $i -eq $p ]; then
                if [ $j -lt $p ]; then
                        let j=j+1
                        k[$j]=$s
                        [ $DEBUG -eq 1 ] && echo j $j
                        fi
                if [ $j -eq $p ]; then
                        for i in `seq 1 $p`
                        do
                                echo ${s[$i]} ${k[$i]}
                        done
                        i=0
                        j=0
                        fi

                fi
        fi
done

Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.

Koszi mindekinek!
Kozben rajottem, hogy jo nagy hulyeseget csinalok ezzel, az osszes *.php file ment egybe egy "cat * >" segedelmevel, azt szetszedtem ket fileba, es utana a "paste" parancs segitsegevel (thx indexforum/ex_lx) osszeraktam egybe. Hiaba, a tegnapi nem az en napom volt. Mindenre a legbonyolultabb megoldast keresem...
De ezek a fenti otletek meg jok lesznek :)

Es ezentul sose lesz olyan otletem, hogy az eveken keresztul letoltott marhasagot megprobalom rendszerezni...inkabb torlom, az egyszerubb.

OFF

Tegnap én is csináltam érdekes dolgokat :D Pythonban írtam egy egyszerű scriptet. Fél órát szívtam azzal, hogy megírjam egy részét. Utána a neten véletlenül találtam meg, hogy van rá egy egy soros Python parancs :)(Természetesen már majdnem befejeztem a saját verziómat, ami kb. 30 soros volt)

ON

Szerintem erre valo az awk. Vagy pipe-al hasznalod, vagy megadod a file nevet utana. Atiranyitod a kimenetet egy masik file-ba, es kesz is. Es ettol meg rovidebben is lehet, szerintem.


awk 'BEGIN{c=0} { inp[c]=$1; c++; if (c==10) { for (a=0;a<5;a++) { print inp[a]" "inp[a+5] } ; c=0 }  }'