Shell Scripting - Befehl für replcstr unter Linux???
Shell Scripting - Befehl für replcstr unter Linux???
Hallo zusammen,
ich sitze gerade an einem größeren Problem und zwar soll ich zwei Windows Batch Dateien unter Linux zum laufen bekommen
Ich kämpfe schon seit Tagen mit den Scripts herum aber komme nur ganz langsam vorwärts. Nun ist der Punkt erreicht an dem ich nicht mehr weiter weiß
Folgenden Parameter möchte ich nun von Windows Batch in Linux Script umwandeln:
replcstr "%2~" "%2~~" %%Variable%% %Variable%
(Hinter %%Variable%% verbirgt sich ein Laufwerkspfad - zur Info)
Hat jemand eine Idee wie ich dies unter Linux umsetzen kann.
Bin wirklich um jeden hilfreichen Tipp froh
Vielen Dank im voraus
Gruß
Steffen
ich sitze gerade an einem größeren Problem und zwar soll ich zwei Windows Batch Dateien unter Linux zum laufen bekommen
Ich kämpfe schon seit Tagen mit den Scripts herum aber komme nur ganz langsam vorwärts. Nun ist der Punkt erreicht an dem ich nicht mehr weiter weiß
Folgenden Parameter möchte ich nun von Windows Batch in Linux Script umwandeln:
replcstr "%2~" "%2~~" %%Variable%% %Variable%
(Hinter %%Variable%% verbirgt sich ein Laufwerkspfad - zur Info)
Hat jemand eine Idee wie ich dies unter Linux umsetzen kann.
Bin wirklich um jeden hilfreichen Tipp froh
Vielen Dank im voraus
Gruß
Steffen
Erstmal gibt es kein "Linux Script", sondern etliche Skriptsprachen. Ich nehme an, du möchtest/sollst die bash verwenden.
Es ist vermutlich einfacher, eine Lösung zu finden, wenn du beschreibst/ausprobierst, was der Befehl tun soll. replcstr scheint zumindest kein internes Kommando von cmd.exe zu sein, so dass mir die genaue Semantik dieses Aufrufs unklar ist.
Janka
Es ist vermutlich einfacher, eine Lösung zu finden, wenn du beschreibst/ausprobierst, was der Befehl tun soll. replcstr scheint zumindest kein internes Kommando von cmd.exe zu sein, so dass mir die genaue Semantik dieses Aufrufs unklar ist.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Hi,
sorry, habe vergessen dass replcstr ein zusätzliches Programm ist (replcstr.exe).
Denke aber dass das kleine Programm bei Programmieren sehr bekannt ist.
Der Befehl soll gute Frage was er eigentlich soll
!!!
Oder besser gesagt ich suche ein Programm unter Linux, das mir Variablen in einer Datei ersetzt.
Sorry, falls noch unklar kann ich dies erst am Montag beantworten da der Mitarbeiter leider im Moment im Urlaub ist.
Trotzdem Danke erstmal
sorry, habe vergessen dass replcstr ein zusätzliches Programm ist (replcstr.exe).
Denke aber dass das kleine Programm bei Programmieren sehr bekannt ist.
Der Befehl soll gute Frage was er eigentlich soll

Oder besser gesagt ich suche ein Programm unter Linux, das mir Variablen in einer Datei ersetzt.
Sorry, falls noch unklar kann ich dies erst am Montag beantworten da der Mitarbeiter leider im Moment im Urlaub ist.
Trotzdem Danke erstmal
Für Stringersetzungen in Dateien gibt es verschiedene Möglichkeiten. Eine Möglichkeit ist es, sed zu verwenden.
Man kann mehrere Ersetzungen kombinieren:
Wenn man keine festen Strings verwenden will, geht das ebenfalls, da die bash vor dem Aufruf des sed ja alle Parameter und Variablen in der Befehlszeile ersetzt.
Das richtige Quoten (",',\) kann trickreich sein.
Janka
Code: Alles auswählen
$ sed "s/ALTER_STRING/NEUER_STRING/g" <Quelldatei >Zieldatei
Code: Alles auswählen
$ sed "s/ALTER_STRING_1/NEUER_STRING_1/g;s/ALTER_STRING_2/NEUER_STRING_2/g;" <Quelldatei >Zieldatei
Code: Alles auswählen
#!/usr/bin/bash
VAR='bla bla'
sed "s/ALTER_STRING_1/$1/g;s/ALTER_STRING_2/$VAR/g;" <Quelldatei >Zieldatei
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Hi Janka,
vielen Dank für Deine ausführliche Antwort, denke dass diese mir sehr weiterhelfen wird.
Kann ich eigentlich anstatt einer Quelldatei und Zieldatei auch eine Variable benutzen?
Noch eine kleine Frage da ich bis jetzt noch nicht viel unter Linux Programmiert habe:
Du schreibst beim Deinem letzten Beispiel #!/usr/bin/bash kann ich den Befehl auch für #!/bin/sh nehmen?
Vielen Dank im voraus
vielen Dank für Deine ausführliche Antwort, denke dass diese mir sehr weiterhelfen wird.
Kann ich eigentlich anstatt einer Quelldatei und Zieldatei auch eine Variable benutzen?
Noch eine kleine Frage da ich bis jetzt noch nicht viel unter Linux Programmiert habe:
Du schreibst beim Deinem letzten Beispiel #!/usr/bin/bash kann ich den Befehl auch für #!/bin/sh nehmen?
Vielen Dank im voraus
Hi Janka,
jetzt ist mir noch eines unklar und zwar habe ich jetzt folgendes angewendet:
replcstr "%2~" "%2~~" %%Test%% "%Test% (Windows Befehl - replcstr ersetzt Text oder Zeichenketten)
(Hinter %2~ und %2~~ stecken ja zwei Dateien in unterschiedlichen Verzeichnissen)
Im Moment habe ich es unter Linux so geschrieben:
sed "s/%%Test%%/ %Test%/g" <Quelldatei >Zieldatei
Kann ich jetzt z.B. anstatt <Quelldatei auch <$Variable schreiben???
Sprich einfach die Variable auslesen?
Vielen Dank im voraus
jetzt ist mir noch eines unklar und zwar habe ich jetzt folgendes angewendet:
replcstr "%2~" "%2~~" %%Test%% "%Test% (Windows Befehl - replcstr ersetzt Text oder Zeichenketten)
(Hinter %2~ und %2~~ stecken ja zwei Dateien in unterschiedlichen Verzeichnissen)
Im Moment habe ich es unter Linux so geschrieben:
sed "s/%%Test%%/ %Test%/g" <Quelldatei >Zieldatei
Kann ich jetzt z.B. anstatt <Quelldatei auch <$Variable schreiben???
Sprich einfach die Variable auslesen?
Vielen Dank im voraus
- jochen
- prolinux-forum-admin
- Beiträge: 699
- Registriert: 14. Jan 2000 15:37
- Wohnort: Jülich
- Kontaktdaten:
sed liest immer von der Standardeingabe. Aber wenn Du ihm dort den Inhalt der Variablen gibst, geht das auch:
Jochen
Code: Alles auswählen
echo $VAR | sed 's/suchtext/ersetzungstext/g' >zieldatei
Die grösste Lüge der EDV? "Mal eben..."
$irgendwas wird immer zum Inhalt der Variablen "irgendwas" expandiert, es sei denn, man quotet es z.B. mit '$irgendwas' oder \$irgendwas. Das kann man überall im Skript anwenden.
#! in der ersten Zeile ist eine Kennzeichnung, dass jetzt der Pfad des für das Skript zu verwendene Interpreter folgt. Da sollte /usr/bin/bash stehen, wenn man bash-Syntax verwendet. Die Bourne-Shell (meist /bin/sh) ist älter und kann nicht so viel. Bei Linux-Systemen ist meist auch /bin/sh einfach ein Link auf die Bash, das muss aber nicht so sein (bei BSD ist das z.B. nicht so), und kann dann zu Problemen führen.
Es gibt noch andere "tolle" Shells: ksh (pdksh), tcsh (für Skripte bäh!) oder zsh. Die sind aber eher selten installiert.
Janka
#! in der ersten Zeile ist eine Kennzeichnung, dass jetzt der Pfad des für das Skript zu verwendene Interpreter folgt. Da sollte /usr/bin/bash stehen, wenn man bash-Syntax verwendet. Die Bourne-Shell (meist /bin/sh) ist älter und kann nicht so viel. Bei Linux-Systemen ist meist auch /bin/sh einfach ein Link auf die Bash, das muss aber nicht so sein (bei BSD ist das z.B. nicht so), und kann dann zu Problemen führen.
Es gibt noch andere "tolle" Shells: ksh (pdksh), tcsh (für Skripte bäh!) oder zsh. Die sind aber eher selten installiert.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.