ein Programm, dass per Parameter einen Hexstring ersetzt

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 20.08.2008 09:44:43

Hallo kennt ihr ein Programm,
dem man per Parameter angeben kann, alle Treffer eines Strings oder Hexstrings mit einen neuen zu ersetzen?

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von SubOptimal » 20.08.2008 21:52:25

Hallo,

Du müsstest schon genauer sagen was Du machen willst. Willst Du in einer Datei einen bestimmten String durch einen anderen ersetzen?

Als Beispiel:

Code: Alles auswählen

echo "ein Programm, dass per Parameter einen Hexstring ersetzt" | sed 's/ein/ZWEI/g'
SubOptimal

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von rendegast » 20.08.2008 23:10:21

vielleicht über einen Umweg?
Dump mit hexdump oder xxd o.a.
Modifikation mit sed
Reverse mit xxd
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 08:58:14

hmmmm,

und wo gebe ich an, in welcher Datei gesucht werden soll?
Am besten waere es ja, wenn das Teil rekursiv laufen wuerde.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 09:34:27

Ein bisschen genauer was du machen willst wäre _sehr_ hilfreich!
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 09:55:51

Ich will, weil ich mit der Registry so einige Eintraege nicht aendern kann, gewaltsam mit Linux ein paat Strings umaendern. Und zwar waeren es alle Einstellungen und Eintraege die c:\Dokume lauten, Ich will diese auf F:\Dokume umstellen.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 09:59:48

naja...(ungetestet also bitte vorher an einem beispielverzeichnis austesten)

Code: Alles auswählen

find /hauptpfad/zu/den/Dateien -type f -exec sed -i 's/suche/ERSETZE/g' \;
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 16:18:29

Muss das dann so aussehen?
/s/C:\Doku/F:\Doku/g

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von uwepr » 21.08.2008 20:06:57

Seid gegrüßt,
ein Ansatz wäre:

Code: Alles auswählen

#!/bin/bash
if  $find C:\\Doku* >&/dev/null
then
     for i in $($find C:\\Doku*) ; do $mv $i $(echo $i | $sed 's/C:\\Doku/F:\\Doku/') 2>/dev/null ; done
fi ;
exit 0
Problem ist, daß \ sowohl in der bash als auch in sed zum Maskieren von Sonderzeichen benutzt wird und damit selbst ein Sonderzeichen ist. Die Schleife funktioniert nicht, weil \ bei'm Ausgeben von $i durch echo entfernt wird, statt C:\Doku* also C:Doku in die Pipe geleitet wird. Sihe

Code: Alles auswählen

uwe@debian-uwe:~$ echo C:\Doku
C:Doku
uwe@debian-uwe:~$ 

Code: Alles auswählen

uwe@debian-uwe:~$ echo C:\\Doku | sed 's/C:\\Doku/F:\\Doku/'
F:\Doku
uwe@debian-uwe:~$ 
funktioniert. Aber in $i ist halt nur C:\Doku* drin, da auch bei'm find-Befehl maskiert werden muß. Und dann käme noch mv.
Vielleicht hat jemand noch irgendeinen Trick in der Hinterhand...
mmv könnte noch eine Möglichkeit sein, bin in mmv allerdings momentan nicht fit...
Viele Grüße! Uwe Pr.
squeeze/fluxbox

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 20:25:23

NEIN,

ich will doch nicht c:\Doku verschieben sondern in allen Dateien nach dem String C:\Doku suchen und dann ersetzen.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 20:32:03

aber er sagte zumindest das Entscheidende

sed 's/C:\\Doku/F:\\Doku/g'

ist natürlich immer noch UNGETESTET!
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 20:34:33

wo gebe ich denn an in welcher Datei gesucht und ersetzt werden soll?

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 20:35:39

Ich will z.B. in /winshit/windows/system32/config/system.dat naach C:\Doku suchen und dann mit F:\Doku ersetzen.

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 20:42:26

Ich nehme an, ich habe mich unklar ausgedrueckt.
Ich will nicht die Strings eines Parameters auswechseln, sondern via Parameter die Strings einer Datei.

Benutzeravatar
uwepr
Beiträge: 657
Registriert: 03.02.2007 12:13:01
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Halle/S.
Kontaktdaten:

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von uwepr » 21.08.2008 20:56:46

Hallo HannesMeyer,
Jetzt kapier ich, was Du willst:
Datei einlesen, Ausdruck ersetzen und in neue Datei schreiben, mit der Du durch simples Umbenennen die alte ersetzt.

Code: Alles auswählen

uwe@debian-uwe:~$ cat Pfad\\zur\\Datei | sed 's/C:\\Doku/F:\\Doku/' >text.txt
leitet in text.txt. Es könnte aber noch eine Stolperfalle geben: der Zeilenumbruch ist in Win anders gelöst!
Viele Grüße! Uwe Pr.
Zuletzt geändert von uwepr am 21.08.2008 21:01:48, insgesamt 1-mal geändert.
squeeze/fluxbox

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 20:57:52

brauchst auch nicht mit "cat" und der Umleitung zu arbeiten, sondern kannst per

sed -i 'XYSADAS' /pfad/zur/datei

Arbeiten.. aber denke daran BACKUP falls du was falsch machst..
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:01:12

Hallo,

ich weis doch nicht, wie die Dateien heissen,
ich will mit find alle Dateien suchen und in jeder einen String ersetzen.

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 21:04:08

??? soweit ich weiß hatte ich das schon einmal geschrieben!
Savar hat geschrieben:naja...(ungetestet also bitte vorher an einem beispielverzeichnis austesten)

Code: Alles auswählen

find /hauptpfad/zu/den/Dateien -type f -exec sed -i 's/suche/ERSETZE/g' \;
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:06:20

Na dann probiere ich dsa mal aus.

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:07:54

sed: kommt leider no inputfile

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 21:09:55

sorry da fehlte was (und ich hoffe du hast ein BACKUP.. sonst zerschiesst du dir dein Windows und machst mich verantwortlich!):

Code: Alles auswählen

find /hauptpfad/zu/den/Dateien -type f -exec sed -i 's/suche/ERSETZE/g' {} \;
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:12:19

Savar hat geschrieben:sorry da fehlte was (und ich hoffe du hast ein BACKUP.. sonst zerschiesst du dir dein Windows und machst mich verantwortlich!):
Ja, das wuerde ich machen, ich wuede dich fuer mein Glueck verantworlich machen und dich reich beschaenken.
Ich helfe naemlich gerade meinem Kumpel,
wir haben 2 Tage vor dem PC gesessen, weil wir unter sp3 die Dokuemnte und Einstellungen einfach nicht umstellen konnten.

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:13:18

ja endlich funktioniert der Scheiss!

Benutzeravatar
Savar
Beiträge: 7174
Registriert: 30.07.2004 09:28:58
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von Savar » 21.08.2008 21:14:26

Na ich hoffe das war ein glückliches "Scheiss" Wort :)
MODVOICE/MYVOICE
Debianforum Verhaltensregeln
Log Dateien? -> NoPaste

HannesMeyer
Beiträge: 172
Registriert: 10.08.2008 13:36:04

Re: ein Programm, dass per Parameter einen Hexstring ersetzt

Beitrag von HannesMeyer » 21.08.2008 21:18:03

Sorry,

ich hoere gerade ein Hoerbuch von Heinrich Boell aus der Zeit des Krieges, er sagt ganz oft Scheisse.

Naja, ich habe jetzt folgenden Befehl ausgefuehrt:
find /windows/ -type f -exec sed -i 's/C:\\Docu/h:\\Docu/g' {} \;

Ich hoffes es funktioniert.

Antworten