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.
- 952 megtekintés
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 :)
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
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!)
- A hozzászóláshoz be kell jelentkezni
szervusz!
a perjelek koze sima regexp-et irsz es mar megy is (elvileg) :)
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
#!/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. :-)))
- A hozzászóláshoz be kell jelentkezni
Ezt is koszi, bar ezen meg el kell tunodnom....
Ha jol ertem, ezt az eredeti file elejere kellene beszurnom.
A gond ott van vele, hogy kb 500 sor van, es ha azt mind felsorolom
a read es echo argumentumakent, ennyi erovel kezzel is sorba rendezhetem :)
- A hozzászóláshoz be kell jelentkezni
> 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 :-)
- A hozzászóláshoz be kell jelentkezni
ezrt gondolhattad volna, hogy nem ot sor miatt kell neki ra script :)
-. . - -... ... -..
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Felorat? En altalaban egy napot tunodok/probalkozok elotte, mielott felteszem a kerdest :)
Ennyi elvesztegett idot :)
- A hozzászóláshoz be kell jelentkezni
Tegnapelőtt fél órát :d Azelőtt sokkal többet (Volt az egy nap is:)), de akkor nem jutott eszembe semmi :)
- A hozzászóláshoz be kell jelentkezni
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 } }'
- A hozzászóláshoz be kell jelentkezni
Ha az ember ismeri az awk-ot :)
Ilyenkor megint latom, milyen hatalmas hianyossagok tatonganak a tudasomban.
Igazabol ott a gond, hogy nemcsak scriptben nem tudom, de algoritmust se tudnek ra kesziteni :(
- A hozzászóláshoz be kell jelentkezni
Majd belejosz, nem nagy dolog :)
- A hozzászóláshoz be kell jelentkezni