Szkriptek: Python, Perl, Bash, ...

Perl - script kimenet naplózása

Van egy perl szkriptem amely fogad jó néhány paramétert.
Az egész szkript kimenetét szeretném egy fájlba naplózni majd emailben elküldeni.

Bash formában valahogy így nézne ki: perl szkript.pl para1 para2 parax | tee logfile | mail

Viszont ezt az egészet szeretném automatizálni, lehetőleg úgy, hogy ne egy másik fájlból hívjam meg az említett szkriptet.

Tehát a kérdésem az lenne, hogy valamilyen formában megoldható-e perlben, hogy az egész szkript kimenetét kiköpje egy fájlba "is" ne csak az STDOUT-ra. A mailer rész most nem játszik.

bash szkript - miért olyan lassú

Adott egy szkiptem, amit nagyobb mennyiségű adat feldolgozására szeretnék használni. A szkript fut is rendesen, és helyesen dolgozik, viszont nagyon lassan.
Összesen egy óra alatt egy példány csak ~1 MB adattal végzett, és egy-egy példányra kb 1 GB-nyi bemeneti adat jutna.
A vicc az, hogy az egyes példányok CPU használata 1% körül van.
Ennyire sokat számítana az alkalmazások indítása, és az i/o műveletek?

Itt a kód:


#!/bin/bash

INPUT="$1"
OUTPUT="$2"
BAD="$3"

echo -n > "$OUTPUT" 
echo -n > "$BAD"
while read A; do
    N=`echo "$A" | rev | cut -c 1`
    case "$N" in
        ( '1' | '3' | '7' | '9' )
	    echo "$A" >> "$OUTPUT"
	    ;;
	*)
	    echo "$A" >> "$BAD"
	    ;;
     esac
done < "$INPUT"

bash alias kiegészítő space nélkül?

Sziasztok!

Azzal a prblémával találkoztam, hogy szeretnék egy olyan alias-t csinálni, ami nem tesz space-t a parancs végére.

Pontosan egy svn checkout-hoz kellene, tehát:
alias xx="svn checkout http://svn.svn/direcories/'

Amit így szeretnék használni: "xx Valami", ami ezt jelentené:
svn checkout http://svn.svn/direcories/Valami

Bash scriptet tudok rá írni, de érdekelne, hogy van-e erre valami egyszerű, alias közeli megoldás.

Előre is köszönöm a válaszokat:
tz

Solaris, perl, pipe

Sziasztok,

A problémám az lenne, hogy adott egy script, aminek van pár feladata, de, ha úgy hívják meg, hogy

cat file | script.pl > eredmeny

A Scriptből szeretném megtudni, hogy mi az "eredmeny" file _neve_, lehetőleg teljes útvonallal.

Linuxon, procfs -en keresztül megy, tudom, de ez most Solaris 5.9 -en kell :)

köszi

sort 2 file

Szeretnék rorba rendezni bash-ben szám szerint két file tartalmát, de úgy, hogy ha vannak egyforma elemek mindkét file-ban, akkor a meghatározott file adott tartalmát tegye előrébb. Ez utóbbit valahogy nem sikerül megoldanom úgy, hogy ne adjak plusz adatot a file-ok tartalmához.
Esteleg valaki talált már megoldást erre?

Perl regexp segítségkérés

Sziasztok!

Van egy ilyen kódrészletem perlben.


foreach my $x (@symlinks){
$link=`readlink $x`;
....
push(@targets_new,$link=~s/akarmi-.{3, }-$src/-$dst/g);
....
}

A @symlinks tömb szimlinkeket tartalmaz, ezek célpontjait szeretném egy másik tömbbe (@targets_new) felvinni úgy, hogy közben szeretném kicserélni egy bizonyos részüket $src-ről $dst-re, melyek két tetszőlegesen választott sztringet reprezentálnak.

Egy példa: akarmi-2.3-alpha -> akarmi-2.3-beta. A két "-" jel közt legalább 3 karakter forduljon elő.
Amit írtam regexpet lefut ugyan de semmit nem ad vissza.

Ha csak simán "=~s/$src/$dst/g" regexpet használok, akkor három darab 1-est kapok a @targets_new tömmbe.
Nem tudom, hogy lehetne "egy művelettel" lecserélni és rögtön be is rakni az új tömbbe a módosított változó értékeket?

Alternatív megoldás is érdekel.

Előre is köszönöm!

Egy egyszerű BASH kérdés

Kedves Fórumtársak!

A következőről lenne szó:
Adott egy shell szkript. Azt lehet tudni, hogy a 10 és afeletti argumentumokat a ${szám} formában lehet elérni.
Én ezeket szeretném egy cikluson belül egy futóindex-szel egyenként elérni, és manipulálgatni. Azoban itt jön a trükkös része a dolognak. Hogyan is kellene ezt?

Az alábbi a kód:


#!/bin/bash

for i in `seq 1 $#`; do
    echo -e ${$i}
done

A probléma abban rejlik, hogy a kapcsos zárójelen belül gondja van a bash-nek a $-ral. Ha a kifejezés elé teszem, akkor pedig $$ lesz, ami a szkript pidje. Ha escape-elem az első $-t, akkor sem működik rendesen, úgyhogy kicsit talácstalan vagyok. Ezért fordulok hozzátok. Hogyan kellene ezt?
for i in "$@"-et nem akarok, mert az megkeveri a paramétereket, ha valamelyikben szóköz van.
Előre is köszönöm a válaszokat.

Üdv:
János

Report 2 HTML + 2 szkript /awk, sed, grep/

Sziasztok, arrol lenne szo, h peldaul van egy ilyen szovegunk:

http://www.fit.vutbr.cz/study/courses/IOS/public/Lab/projekt1/ls.newrep…

A feladat pedig ugy szol hozza, h HTML kodda kell alakitani az egeszet, es igy kell majd mukodnie:
tee ls.newreport | ./report2html.sh >ls.html

es ez lesz belole:
http://www.fit.vutbr.cz/study/courses/IOS/public/Lab/projekt1/ls.html

= =

== ==

ahol dollar jel azokat

be
<, > es & a

 es 

kozott erre: <, > a &.
ures sor helyett betenni
taget
Ket helykoz es utann csillag, akk listat kell belole csinalni

ahol nincs semmi specialis jel annak a sornak a vegere szinten
taget kell tenni.

es egy szkriptet kell megirni ami ezt megcsinalja, mar awk val csinalom:), de nem muxik:).


#!/bin/bash
#/usr/awk -f
#``

awk 'BEGIN {print "", "" } >> $FILENAME +".html" '
# a H1 az majd igy fog kinezni reg awk '/^=$/' , H2 pedig igy ^==$

#read line

awk 'RS = "\n"'

if [^$] ; then awk ''/^$ /$/' {print"

"; for (i = 2; i <= NF; i = i + 1); NF+1 = "

"}'
fi

awk ''/^$ /$/' {print"

"}'


if awk  ''/^=$/'   {print ""}' then awk ''NF+1 '{print ""}'
if awk  ''/^==$/'   {print "

"}' then awk ''NF+1 '{print "

"}' awk 'END {print"", ""}' Igazól ma fekszem neki, de bármilyen segitség jol jon :) Segitsegeteket elore koszonom.