Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Ersetzen aller Vorkommen ab einer bestimmten Position mit einem Shell script

Frage Entwicklung Batch & Shell

Mitglied: NicoBosshard

NicoBosshard (Level 1) - Jetzt verbinden

23.03.2013, aktualisiert 24.03.2013, 2312 Aufrufe, 7 Kommentare

Hallo zusammen,

Ich versuche schon seit kurzer Zeit einige nützliche Shellscripte auf meinem iPad über MobileTerminal zu programmieren. Ich habe bis jetzt auch schon vieles geschafft. Kürzlich habe ich ein Programm programmiert, dass alle bestimmten Vorkommen einer Datei in andere Ersetzen kann. Dieses würde ich jetzt gerne für aufgezeichnete Daten (1 Byte pro Datensatz) benutzen. Ich will z.B. alle 02 in 48 umwandeln. Mein Problem dabei ist, dass die Datei jetzt aber am Anfang 2000 Bytes Infodaten wie z.B. Ort enthält, die nicht ersetzt werden dürfen. Das heisst, dass erst ab dem 2000 Byte ersetzt werden darf. Eine zusätzliche Schwierigkeiten ist auch noch, dass es keine Zeilen gibt. Ich würde übrigens eine Such- und Ersetz Angäbe in Hexadezimal Bevorzugen aber es ist mir nicht so wichtig, da ich die Zahlensysteme einfach mit meinem Taschenrechner umrechnen kann.

Ich habe das gleiche Programm schon einmal am Computer in Blitzbasic Programmiert:

01.
Dim Block(25000000) 
02.
 
03.
;Einlesen und verändern der Datei 
04.
filein = ReadFile("Test.dat") 
05.
	i=0 
06.
	i_max=FileSize("Test.dat") 
07.
 
08.
	While Not i=i_max 
09.
		Block(i) = ReadByte(filein) 
10.
		If i>2000 And Block(i)=18 Then Block(i)=46 
11.
		i=i+1 
12.
	Wend 
13.
 
14.
CloseFile filein 
15.
 
16.
 
17.
;Änderungen Spiechern 
18.
filein = WriteFile("Test.dat") 
19.
 
20.
	For i=0 To i_max 
21.
		WriteByte filein,Block(i) 
22.
	Next 
23.
	 
24.
CloseFile filein 
25.
 
26.
Print "Fertig!" 
27.
Input() 
28.
End
Die Datei ist übrigens etwa so aufgebaut:

Infodaten (2000 Bytes)
)(&H*°§¬|¢¬|8§ v543^'^'éèSA=W@#°§¬|¢5QEàQ...

Eigentliche Daten (ca. 22 MB)
¦@#§¬°|¢§°#6fd+"*ç%*°§¬|¢¬|8§ v543^'^'éèSA@#°§¬|¢5QEàQ ...


Natürlich sind Die Messdaten nicht solche ASCI Zeichen es wird beim öffnen halt nur so dargestellt deswegen bevorzuge ich eben auch eine Hexadezimaleingabe!


Ich hoffe ihr könnt mir helfen. Wichtig ist hier vielleicht aber noch zu sagen, dass ich noch ziemlicher Anfänger in Shell bin sonst aber ziemlich gut Programmieren kann. Auch ist mein iPad natürlich Jailbrocken. Sonst hätte ich ja MobileTerminal nicht installieren können.

Mitglied: Lochkartenstanzer
23.03.2013, aktualisiert 25.03.2013
Moin,


Als allererstes solltest Du Dir die FAQs und insbesondere die Formattierungsmöglichkeiten eines Beitrages anschauen. Zumindest den Code solltest Du korrekt formattieren, damit man den auch lesen kann.

Ansonsten:

  • Den eigenen iPad zu rooten ist nicht illegal. Nur das Umgehen von korrekter Lizensierung ist illegal.

  • Wenn Du schon Deinen iPad gerootet hast, installier Dir doch einfach die Gnu-Utils wie bash & Co. und benutze das Kommandozeilentool tr zum Ersetzen der Zeichen. Warum das Rad immer neu erfinden?

lks
Bitte warten ..
Mitglied: NicoBosshard
24.03.2013 um 10:52 Uhr
Ich habe mal meinen Frage ein wenig Formatiert.

Leider habe ich tr nicht im Cydia App Store gefunden. Muss ich villeicht zuerst eine entsprechende Quelle adden?

Ich werde mal aber mein erstes Ersetzprogramm posten:

01.
sed -i 's/OCIN/NICO/g' NAME.txt
Geht eigentlich alles gut nur eben kann ich beim Befehl sed nirgens einen Startparameter angeben.

Auch bin ich froh zu wissen, dass Jailbreack doch nicht so Ilegal, wie zuerst vermutet, ist.
Bitte warten ..
Mitglied: NicoBosshard
24.03.2013, aktualisiert um 12:11 Uhr
Habe mitlerweile herausgefunden, dass ich ja gar nichts installieren muss und der Befehl tr schon die ganze Zeit vorhanden war. Nur habe ich immer noch keine Ahnung wie ich eine Startposition angeben kann!
Bitte warten ..
Mitglied: Lochkartenstanzer
24.03.2013, aktualisiert 25.03.2013
z.B. so:

dd if=infile of=outfile bs=2000 count=1 
dd if=infile            bs=2000 skip=1  |  tr "\x02" "\x48" >>outfile
lks

PS: Einrückungen erlauben es, den Code übersichtlicher zu gestalten. Sollte man als guter Programmierer wissen.

PPS: mit sed würde es genauso funktionieren. Allerdings ist sed nicht für Binärdaten ausgelegt.

Edit:

Fehlerhafte Zeile

dd if=infile bs=2000 seek=1 | tr "\x02" "\x48" >>outfile

korrigiert.
Bitte warten ..
Mitglied: NicoBosshard
24.03.2013 um 22:15 Uhr
Vielen Dank Lochkartenstanzer es sieht schon gut aus. Leider gibt es noch folgenden Fehler: "dd 'standard output': cannot seek: Illegal seek". In der Ausgabedatei ist danach aber wenigstens schon die ersten 2000 Bytes zu sehen. Wenn ich seek weglasse wird übrigens alles ersetzt.

Ob die Datei danach beschädigt ist konnte ich leider nicht mehr testen, da mein ganzes iPad ist komplett abgestürzt ist (nur noch Apfel und Ladebalken wie bei einem Update). Der Absturz Grund ist mir noch unbekannt, ich bin aber fast 100% sicher, dass er nicht durch dieses Programm verursacht wurde.

Glücklicherweise habe ich meine SHSH Kays gesichert, dank denen ich es wider auf der Version iOS 6.1.2 Wiederherstellen und von neuem Jailbreacken. Leider wird das einige Tage dauern. Bis dahin bin ich natürlich weiter froh um alle Antworten, die mir helfen dieser seek Fehler noch zu verbessern.
Bitte warten ..
Mitglied: Lochkartenstanzer
24.03.2013 um 22:25 Uhr
Sorry, sollte skip statt seek heißen. Freudscher Vertipper. Aber ein kurzes man dd hätte es zutage gefördert.

lks
Bitte warten ..
Mitglied: NicoBosshard
24.03.2013 um 22:30 Uhr
Herzlichen Danke, ich werde es testen sobald mein iPad wieder läuft.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Poweshell Script soll String ersetzen und die leere Zeile löschen (4)

Frage von Mars123 zum Thema Batch & Shell ...

Microsoft
gelöst Eris Dienst neustarten per Script mit bestimmten Parametern (3)

Frage von dismuss zum Thema Microsoft ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...