Hozzászólások
[code:1:a638613312]
#!/bin/sh
sed -i.bak -e "s|a'|\á|" \
-e "s|e'|\é|" \
-e "s|i'|\í|" \
-e "s|o'|\ó|" \
-e "s|o:|\ö|" \
-e "s|o\"|\õ|" \
-e "s|u'|\ú|" \
-e "s|u:|\ü|" \
-e "s|u\"|\û|" $1
[/code:1:a638613312]
Egyébként, az ő nem utilde, hanem & #337; az ű nem ucirc, hanem & #369; a nagybetűk pedig eggyel előttük vannak. Csak azért mondom, mert tele van a magyar web kalapos u-kkal és hullámos o-kkal.
- A hozzászóláshoz be kell jelentkezni
folytatása:
ha megvannak az alma_20060101 alma_20060102 alma_20060103 ... stb fáljok ezek lesznek a mintakeresési fáljok egy másik fáljnak
a bibi csak az H annak a dátuma 1 nappal késöbbi...
for i in alma_2006*
do grep -f $i > result_2006......txt
done
ez a kiindulási alapom
A lényeg az H pl az alma_20060101 et kerese a log_20060102 -ben s a végső file dátuma egyezzen meg az alma file dátumával...
tud valaki segíteni?
- A hozzászóláshoz be kell jelentkezni
[quote:af58bdfb5e="vicepete"]Sziasztok!
S.O.S. segítség kellene Shell Script írásban!!!
Aki tud segíteni az írjon mailt, vagy keressen meg MSN-n vagy ICQ-n
Köszi
Talán ha leírnád ide a problémát, akkor lenne aki válaszolna a konkrét kérdésedre...
- A hozzászóláshoz be kell jelentkezni
[quote:d42530e465="vicepete"]van egy csomólogfile-om alma01_20060101 alma02_20060101 alma03_20060101 alma01_20060102 alma02_20060102 alma03_20060102... stb
azt szeretném ha az alma01_20060101 alma02_20060101 alma03_20060101 egy fáljba kerüljeken az alma_20060101 -be lényeg az H ugyanazzal a dátum végződéssel legyenek, ezt hogy lehetne megoldani?
gondolom úgy, hogy kigyűjtöd a különböző végződéseket, mondjuk így:
[code:1:d42530e465]ls -1 | sed 's/.*\(.\{8\}$\)/\1/' | sort | uniq[/code:1:d42530e465]
aztán minden ilyen végződéshez kilistázod a file-okat, egybecatteled, esetleg timestamp szerint sortolod, tudomisén.
- A hozzászóláshoz be kell jelentkezni
van egy csomólogfile-om alma01_20060101 alma02_20060101 alma03_20060101 alma01_20060102 alma02_20060102 alma03_20060102... stb
azt szeretném ha az alma01_20060101 alma02_20060101 alma03_20060101 egy fáljba kerüljeken az alma_20060101 -be lényeg az H ugyanazzal a dátum végződéssel legyenek, ezt hogy lehetne megoldani?
aztán van ennek folytatása...
- A hozzászóláshoz be kell jelentkezni
[quote:6206d7a269="ch"][code:1:6206d7a269]
#!/bin/sh
sed -i.bak -e "s|a'|\á|" \
-e "s|e'|\é|" \
-e "s|i'|\í|" \
-e "s|o'|\ó|" \
-e "s|o:|\ö|" \
-e "s|o\"|\õ|" \
-e "s|u'|\ú|" \
-e "s|u:|\ü|" \
-e "s|u\"|\û|" $1
[/code:1:6206d7a269]
Egyébként, az ő nem utilde, hanem & #337; az ű nem ucirc, hanem & #369; a nagybetűk pedig eggyel előttük vannak. Csak azért mondom, mert tele van a magyar web kalapos u-kkal és hullámos o-kkal.
Köszi, jó, hogy szóltál, mert sajnos csak ezeket a gagyikat találtam meg, nem tudtam, hogy van ilyen is, google-el keresgéltem.
- A hozzászóláshoz be kell jelentkezni
Tud segíteni Valaki Perl -ben?
szeretnék egy tetszöleges dátumhoz pl: 20051231 hozzáadni 1 napot
úgy hogy a végeredmény 20060101 legyen
- A hozzászóláshoz be kell jelentkezni
[quote:548344487b="vicepete"]Tud segíteni Valaki Perl -ben?
szeretnék egy tetszöleges dátumhoz pl: 20051231 hozzáadni 1 napot
úgy hogy a végeredmény 20060101 legyen
perlhez nem értek, de szvsz ott is van unix timestamp. szóval abba átalakítod a jelenlegi dátumot, hozzáadsz 24*3600at és vissza.
- A hozzászóláshoz be kell jelentkezni
[code:1:eb4bb77fd1]
use POSIX qw/strftime mktime/;
sub mkalmatime()
{
local ($in) = shift;
local $fdate,$Y,$m,$d;
($fdate) = ($in =~ /^alma_([0-9]{8})$/);
($Y,$m,$d) = ($fdate =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/);
return(0,0,0,$d,$m-1,$Y-1900);
}
sub lsdir()
{
local ($dir) = shift;
return if (!(-d $dir));
local $name;
opendir(DIR,"$dir");
for $name (readdir DIR)
{
if ($name =~ /^alma_[0-9]{8}$/)
{
&prdate("$name",3600*24);
}
}
closedir(DIR);
}
sub prdate()
{
local ($mkalma,$offs) = @_;
print strftime("%Y%m%d",localtime(mktime(&mkalmatime("$mkalma"))+$offs)) ."\n";
}
&lsdir(".");
[/code:1:eb4bb77fd1]
- A hozzászóláshoz be kell jelentkezni
[quote:607a2db02b="vicepete"]alma_20051201, alma_20051202 ...
Nem lehet H a perl egy külső bash paraméterbő vegye a kezdeti dátumot?
(ugyebár az xalma tartalmazza a perl kódot)
valahogy így:
[code:1:607a2db02b]
for i in `ls alma_*|cut -c6-13|sort`
do newdate=`perl xalma`
for k in alma_$i
do cat $k > end_$newdate
done
done
[/code:1:607a2db02b]
Erre van vmi megoldás?
igen van lehetoseg. de minek shell script amikor mar ugyis perlt hasznalsz? :)
de hat te tudod... annyi az egesz, hogy pl
[code:1:607a2db02b]perl xalma "$i"[/code:1:607a2db02b]
es perlben mar tudod kezelni ARGV kent, ebben az esetben $ARGV[0] lesz perlben az $i.
amugy utolso perl script amit ideirtam neked az ezeket megcsinalja. annyi kivetellel, hogy nem nevezi at masik filera. de aztis meglehet:
[code:1:607a2db02b]
use POSIX qw/strftime mktime/;
sub mkalmatime()
{
local ($in) = shift;
local $fdate,$Y,$m,$d;
($fdate) = ($in =~ /^alma_([0-9]{8})$/);
($Y,$m,$d) = ($fdate =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/);
return(0,0,0,$d,$m-1,$Y-1900);
}
sub lsdir()
{
local ($dir) = shift;
return if (!(-d $dir));
local $name;
opendir(DIR,"$dir");
for $name (readdir DIR)
{
if ($name =~ /^alma_[0-9]{8}$/)
{
&renfile("$name",3600*24);
}
}
closedir(DIR);
}
sub renfile()
{
local ($mkalma,$offs) = @_;
local $offdate = strftime("%Y%m%d",localtime(mktime(&mkalmatime("$mkalma"))+$offs)) ;
rename("$mkalma","alma_$offdate");
}
&lsdir(".");
[/code:1:607a2db02b]
- A hozzászóláshoz be kell jelentkezni
[quote:ffbcd10e67="vicepete"]Tud segíteni Valaki Perl -ben?
szeretnék egy tetszöleges dátumhoz pl: 20051231 hozzáadni 1 napot
úgy hogy a végeredmény 20060101 legyen
ezaz egyik lehetoseg
[code:1:ffbcd10e67]
use POSIX qw/strftime mktime/;
print strftime("%Y%m%d",localtime(mktime(0,0,0,31,11,105)+3600*24)) ."\n";
[/code:1:ffbcd10e67]
masik, hogy 31 hez adsz hozza egyet, bar inkabb elozo :)
- A hozzászóláshoz be kell jelentkezni
[quote:261f1bb5e8="j_szucs"]sed -e 's|%%ZONE%%|limeproba.hu|' -e "s|%%IP%%|$1|" update.in | nsupdate -k $KEYFILE
Köszi, ez így királyul müxik. :)
- A hozzászóláshoz be kell jelentkezni
[quote:bc0bb43da9="vicepete"]van egy csomólogfile-om alma01_20060101 alma02_20060101 alma03_20060101 alma01_20060102 alma02_20060102 alma03_20060102... stb
azt szeretném ha az alma01_20060101 alma02_20060101 alma03_20060101 egy fáljba kerüljeken az alma_20060101 -be lényeg az H ugyanazzal a dátum végződéssel legyenek, ezt hogy lehetne megoldani?
aztán van ennek folytatása...
Itt van valami, amiből ki lehet indulni:
[code:1:bc0bb43da9]#!/bin/bash
utolso=0
for i in `ls|cut -c4-12|sort`
do
if [ $i != $utolso ]; then
cat *$i>a_$i
fi
utolso=$i
done
[/code:1:bc0bb43da9]
Persze néhány részletet át kell írni a problémának megfelelően. :-)
(Ebben a változatban a filenevek: a1_20060101, a2_20060101 stb.)
De ez tényleg csak egy v.mi amiből ki lehet indulni, nem egy kész shellscript.
- A hozzászóláshoz be kell jelentkezni
[code:1:7a7499d6d8]
#!/bin/sh
KEYFILE=Klimeproba.hu.+157+40337.private
sed -e 's|%%ZONE%%|limeproba.hu|' -e 's|%%IP%%|$1|' update.in | nsupdate -k $KEYFILE
[/code:1:7a7499d6d8]
Ez egy olyan script akar lenni, ami egy TSIG dinamikus zónát frissít, és majdnem működik is, csak az a baj vele, hogy a $1 helyére mivel sed parancsban vannak, nem kerül be a paraméter. Nincs valakinek valami ötlete, hogyan lehetne ezt megoldani?
Előre is köszi.
- A hozzászóláshoz be kell jelentkezni
Na igen az szép lenne 20051232 :)
köszi erre gondoltam én is, de hogy lesz az alma_20051231 -ből (0,0,0,31,11,105), mert ugye alma_20051201 -től alma_20051231 -ig vannak a fileok.
[code:1:d8accd8114]perl -e'use POSIX qw/strftime mktime/;
print strftime("%Y%m%d",localtime(mktime(0,0,0,31,11,105)+3600*24)) ."\n";'[/code:1:d8accd8114]
- A hozzászóláshoz be kell jelentkezni
[code:1:af1295f4ea]
use POSIX qw/strftime mktime/;
sub mkalmatime()
{
local ($in) = shift;
local $fdate,$Y,$m,$d;
($fdate) = ($in =~ /^alma_([0-9]{8})$/);
($Y,$m,$d) = ($fdate =~ /^([0-9]{4})([0-9]{2})([0-9]{2})$/);
return(0,0,0,$d,$m-1,$Y-1900);
}
print strftime("%Y%m%d",localtime(mktime(&mkalmatime("alma_20051231"))+3600*24));
[/code:1:af1295f4ea]
...nalad gyorsabb lenne (hacsak a nap valtozik) for ciklus..
azt hogy hozzadj naphoz egyet azt igy ertettem:
print strftime("%Y%m%d",localtime(mktime(0,0,0,31+1,11,105))) ."\n";
de tied sem rossz megoldas :) 32 telleg jol allna napkent.
- A hozzászóláshoz be kell jelentkezni
sed -e 's|%%ZONE%%|limeproba.hu|' -e "s|%%IP%%|$1|" update.in | nsupdate -k $KEYFILE
- A hozzászóláshoz be kell jelentkezni
hát ez érdekesen működik... volt 3 alma file-om aztán 2 lett belőle...
A perl H nézne ki véglegesen, ha $i paraméterből kapná a dátumot aztán visszaadná egy vátozónak, mint ahogy leírtam?
[code:1:c5aea7d08a]
for i in `ls alma_*|cut -c6-13|sort`
do newdate=`perl xalma`
for k in alma_$i
do cat $k > end_$newdate
done
done [/code:1:c5aea7d08a]
- A hozzászóláshoz be kell jelentkezni
Na igen így akár lehetne május 40 is :)
De hogy tudom megadni h file nevét paraméterben? Hogy ne kelljen beírni hogy : "alma_20051231"
[code:1:4e8cf17b82]
print strftime("%Y%m%d",localtime(mktime(&mkalmatime("alma_20051231"))+3600*24));[/code:1:4e8cf17b82]
- A hozzászóláshoz be kell jelentkezni
Hali,
megint egy kis sed-es help kéne. Egy olyan scriptet szeretnék, ami a paraméterként megadott fájlban a "repülő ékezetes" karaktereket kicserélni rendes HTML-kódolásra. Hirtelen valami ilyen jutott eszembe:
[code:1:e3601b6a56]
#!/bin/sh
sed -i.bak -e "s|a'|\á|" \
-e "s|e'|\é|" \
-e "s|i'|\í|" \
-e "s|o'|\ó|" \
-e "s|o:|\ö|" \
-e "s|o\"|\õ|" \
-e "s|u'|\ú|" \
-e "s|u:|\ü|" \
-e "s|u\"|\û|" $1
[/code:1:e3601b6a56]
Viszont ez hol kciseréli, hol nem. Miután lefuttatom, a fájlban még maradt csomó kicseréltetlen szöveg.
- A hozzászóláshoz be kell jelentkezni
[quote:a50673431b="Beanie"]Hali,
megint egy kis sed-es help kéne. Egy olyan scriptet szeretnék, ami a paraméterként megadott fájlban a "repülő ékezetes" karaktereket kicserélni rendes HTML-kódolásra. Hirtelen valami ilyen jutott eszembe:
[code:1:a50673431b]
#!/bin/sh
sed -i.bak -e "s|a'|\á|" \
-e "s|e'|\é|" \
-e "s|i'|\í|" \
-e "s|o'|\ó|" \
-e "s|o:|\ö|" \
-e "s|o\"|\õ|" \
-e "s|u'|\ú|" \
-e "s|u:|\ü|" \
-e "s|u\"|\û|" $1
[/code:1:a50673431b]
Viszont ez hol kciseréli, hol nem. Miután lefuttatom, a fájlban még maradt csomó kicseréltetlen szöveg.
És a nagybetûk?
(pl. "s/A'/\Á\;/g" stb.)
- A hozzászóláshoz be kell jelentkezni
Sziasztok!
S.O.S. segítség kellene Shell Script írásban!!!
Aki tud segíteni az írjon mailt, vagy keressen meg MSN-n vagy ICQ-n
Köszi
- A hozzászóláshoz be kell jelentkezni
Esetleg mert hiányzik a g flag. Próbáld így:
[code:1:2778d4cc5d]
sed -i.bak -e "s|a'|\á|g" \
[/code:1:2778d4cc5d]
- A hozzászóláshoz be kell jelentkezni
Ahogy mbaron írta úgy jó, köszi. Nagybetűk nem nagyon vannak benne, azokat általában már egyből jól írom be. Ez egy fordítási projekthez kell amúgy, az angol változatot írom át, csak ha á,é, stb-t írok bele azt nem tudom konzolból sed-del kicserélni, így ez az átmeneti megoldás marad, sed-del jól fel tudom dolgozni ezt.
- A hozzászóláshoz be kell jelentkezni
alma_20051201, alma_20051202 ...
Nem lehet H a perl egy külső bash paraméterbő vegye a kezdeti dátumot?
(ugyebár az xalma tartalmazza a perl kódot)
valahogy így:
[code:1:9f01cd15d6]
for i in `ls alma_*|cut -c6-13|sort`
do newdate=`perl xalma`
for k in alma_$i
do cat $k > end_$newdate
done
done
[/code:1:9f01cd15d6]
Erre van vmi megoldás?
- A hozzászóláshoz be kell jelentkezni
Köszönöm az eddigi segítséget
a másik kérdésemben is tud valaki segíteni?
vanak ugyebár mostmár alma_20060101, alma_20060102, alma_20060103 ... stb file-ok ezek lennének a keresési fájlok
a korte_20060102, korte_20060103, korte_20060104 ... stb file-ban
a bibi csak az H a korte_20060102 -es fileban kell keresni a alma_20060101 -es filet de a végén end_20060101 ként akarnám elmenteni...
grep -f alma_20060101 korte_20060102 > end_20060101
Erre tud vki mondani vmit?
- A hozzászóláshoz be kell jelentkezni