Newbe Frage: Wie erstelle ich ein Script?
Newbe Frage: Wie erstelle ich ein Script?
Hallo,
ich möchte mir ein einfaches Script erstellen, habe aber keine Ahnung wie ich überhaupt ran gehen soll. Hoffentlich ist das der richtige Bereich des Forums um solche Fragen los zu werden.
Ich vermute mal dass sich das Problem sehr leicht auf bash Ebene lösen lässt. Aber da ich noch nie etwas mit Scripten zu tun hatte, kenne ich weder einen Befehl noch ein Quelle um mich zu informieren.
Zur Problemstellung:
Ich habe hier rund 250 text-Header Files, die bearbeitet werden wollen und unter einem anderen Namen abgespeichert.
Was das Script machen soll:
- text-Header File öffnen
- etliche Veränderungen; hier brauche ich ein paar IF´s, WHILE Schleifen, SWITCH wäre ebenfalls nicht zu verachten und zu guter letzt wäre eine ROUND Fkt auch ganz gut
- und nun das Bearbeitet File unter einem anderen Namen wieder ablegen
Das ganze nun noch in eine Schleife und ca. 250x laufen lassen.
Womit macht man das bzw. welche Befehle brauche ich und wo finde ich deren Syntax.
Besten Dank schon im Voraus
Gruß
Stefan
ich möchte mir ein einfaches Script erstellen, habe aber keine Ahnung wie ich überhaupt ran gehen soll. Hoffentlich ist das der richtige Bereich des Forums um solche Fragen los zu werden.
Ich vermute mal dass sich das Problem sehr leicht auf bash Ebene lösen lässt. Aber da ich noch nie etwas mit Scripten zu tun hatte, kenne ich weder einen Befehl noch ein Quelle um mich zu informieren.
Zur Problemstellung:
Ich habe hier rund 250 text-Header Files, die bearbeitet werden wollen und unter einem anderen Namen abgespeichert.
Was das Script machen soll:
- text-Header File öffnen
- etliche Veränderungen; hier brauche ich ein paar IF´s, WHILE Schleifen, SWITCH wäre ebenfalls nicht zu verachten und zu guter letzt wäre eine ROUND Fkt auch ganz gut
- und nun das Bearbeitet File unter einem anderen Namen wieder ablegen
Das ganze nun noch in eine Schleife und ca. 250x laufen lassen.
Womit macht man das bzw. welche Befehle brauche ich und wo finde ich deren Syntax.
Besten Dank schon im Voraus
Gruß
Stefan
Moin Stefan,
ich finde den Advanced Bash-Scripting Guide immer sehr hilfreich. Ist aber auf
englisch, und ich weiss nicht, wie nuetzlich er ist, wenn man ueberhaupt noch
nie was damit gemacht hat:
Gruss,
- Silke -
ich finde den Advanced Bash-Scripting Guide immer sehr hilfreich. Ist aber auf
englisch, und ich weiss nicht, wie nuetzlich er ist, wenn man ueberhaupt noch
nie was damit gemacht hat:
Code: Alles auswählen
http://www.tldp.org/LDP/abs/html/
- Silke -
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist schon schwieriger.
- Kurt Tucholsky -
- Kurt Tucholsky -
Eine Variante wäre die Shell selbst zu benutzen. Wie man die bash programmiert erfährst du hier [1]. Möglicherweise eignen sie für deinen Einsatzfall eher Programmiersprachen wie Perl oder Python.
eagle
[1] http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
eagle
[1] http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams
Für den Anfang kannst du dir das auch mal ansehen.
http://www.selflinux.org/selflinux/html ... erung.html
http://www.selflinux.org/selflinux/html ... erung.html
Gruss
Marc
Wer glaubt, etwas zu sein,
hat aufgehört, etwas zu werden.
debianforum.de Verhaltensregeln
Marc
Wer glaubt, etwas zu sein,
hat aufgehört, etwas zu werden.
debianforum.de Verhaltensregeln
Hallo,
danke für die Links, ich habe mich schon etwas eingelesen und habe festgestellt, dass die bash ein sehr mächtiges Werkzeug ist. Das reicht für meine Zwecke völlig. Dankeschön.
Mit einer Sache komme ich aber überhaupt nicht klar. Folgender Inhalt liegt in einer Datei:
Nun möchte ich die Zeilen, beginnend mit PointXX, wenn sie Gefüllt sind, an ein Array übergen. Das Komma als Trenner. Wie kann ich das machen?
danke für die Links, ich habe mich schon etwas eingelesen und habe festgestellt, dass die bash ein sehr mächtiges Werkzeug ist. Das reicht für meine Zwecke völlig. Dankeschön.
Mit einer Sache komme ich aber überhaupt nicht klar. Folgender Inhalt liegt in einer Datei:
Code: Alles auswählen
OziExplorer Map Data File Version 2.2
Gb004.jpg
..\Maps\GBAtlas\GB004.jpg
1 ,Map Code,
Ord Srvy Grt Britn,, 0.0000, 0.0000,WGS 84
Reserved 1
Reserved 2
Magnetic Variation,,,E
Map Projection,(BNG) British National Grid,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No
Point01,xy, 318, 277,in, deg, , ,N, , ,W, grid, SW, 60000, 90000,N
Point02,xy, 318, 3233,in, deg, , ,N, , ,W, grid, SW, 60000, 40000,N
Point03,xy, 2104, 3233,in, deg, , ,N, , ,W, grid, SW, 90000, 40000,N
Point04,xy, 2102, 276,in, deg, , ,N, , ,W, grid, SW, 90000, 90000,N
Point05,xy, , ,in, deg, , ,N, , ,W, grid, , , ,N
Point06,xy, , ,in, deg, , ,N, , ,W, grid, , , ,N
Mit bash wird das mühsam (musst noch z.B. awk verwenden), ich hab deshalb mal ein kleine Pythonskript geschrieben:(Beachte, dass Einrückung bei Python wichtig ist)
Code: Alles auswählen
#!/usr/bin/python
datei = open("Meine Datei.txt")
for line in datei:
if line.startswith("Point"):
data = [x.strip() for x in line.split(",")]
if data[3] == "":
# leere Zeile
continue
# hier mit data arbeiten
print data
Hallo Joghurt,
vielen Dank für deine Mühen, Python scheint echt gut lesbar zu sein, ich verstehe sogar ganz gut was da steht. Sogar ohne die Sprache zu kennen. Werde ich mir bei Gelegenheit genauer ansehen. Gerade im Moment hat mit die bash voll in ihren Bann gezogen.
Ich habe selbst eine Lösung für mein Problem gefunden. Da alle Dateien gleich aufgebaut sind, ersetze ich einfach mit "tr" alle ',' durch ' '
und Frage die Punke mit einer einfache WHIL Schleife und ab. Die Zahl der Wiederholungen ermittle ich mit der option -c von grep.
Besten Dank
vielen Dank für deine Mühen, Python scheint echt gut lesbar zu sein, ich verstehe sogar ganz gut was da steht. Sogar ohne die Sprache zu kennen. Werde ich mir bei Gelegenheit genauer ansehen. Gerade im Moment hat mit die bash voll in ihren Bann gezogen.
Ich habe selbst eine Lösung für mein Problem gefunden. Da alle Dateien gleich aufgebaut sind, ersetze ich einfach mit "tr" alle ',' durch ' '
und Frage die Punke mit einer einfache WHIL Schleife und
Code: Alles auswählen
array=($(grep point$whil_var -i $file | tr ',' ' '))
Besten Dank