highend01
Goto Top

Backslash - CRLF - 2 Leerzeichen Kombination finden und ersetzen

Guten Morgen,

innerhalb einer exportierten .reg Datei gibt es häufiger mal REG_BINARY Werte, die sich über mehrere Zeilen erstrecken.

Sowas z.B.:
"Key"=hex:09,EF,BE,0B,C1,89,A1,83,E2,8E,5C,8B,90,15,2E,F4,54,65,67,C9,\  
  23,E4,DE,0D,36,3E,72,0E,C3,F4,73,8E,EE,C1,61,CF,3B,6D,CC,8E,AE,7A,75,B5,17,\
  87,7C,F5,68

Kennt jemand eine Möglichkeit diese Zeilen nach dem "\(CRLF) " zu durchsuchen und dieses gegen
"" (leerer Wert) zu ersetzen?

Ausehen soll das Ganze danach so:
"Key"=hex:09,EF,BE,0B,C1,89,A1,83,E2,8E,5C,8B,90,15,2E,F4,54,65,67,C9,23,E4,DE,0D,36,3E,72,0E,C3,F4,73,8E,EE,C1,61,CF,3B,6D,CC,8E,AE,7A,75,B5,17,4E,14,F6,9D,DD,60,84,3B,45,02,F5,F7,15,11,2D,35,76,D5,BE,29,67,34,0E,C1,36,87,7C,F5,68  

Die der .bat Datei übergebene .reg Datei wird am Anfang per

for /f "skip=1 tokens=*" %%a in ('type %1') do (  
set line=%%a
eingelesen (die entsprechende .reg Datei ist dann der Parameter %1). Es wäre schön wenn schon innerhalb der FOR-Schleife diese Ersetzung stattfinden könnte.

Wenn es nicht mit normalen Batchmitteln möglich ist, käme auch ein Aufruf von sed / tr / awk in Frage
(aus den GnuUtils). Leider hatte ich mit sed / tr keinen Erfolg, was das Zusammenbasteln der nötigen
Parameter für den Aufruf betrifft (und Google wollte für den speziellen Fall auch nicht weiterhelfen).

Danke für evtl. Ideen & Vorschläge!

Gruß,
Highend

Content-ID: 120394

Url: https://administrator.de/contentid/120394

Ausgedruckt am: 16.11.2024 um 05:11 Uhr

paulepank
paulepank 14.07.2009 um 11:43:06 Uhr
Goto Top
Hallo Highend,

es geht ja nicht nur um \CRLF, sondern die 2 nachfolgenden Leerzeichen (auf der nächsten Zeile) müssen auch mit ersetzt werden.
Mit rpl geht das so.
rpl -q -e "\\\r\n  " "" datei.reg  

Sollte deine reg-datei nicht im ASCII-Format vorliegen, ist ein Zwischenschritt notwendig. rpl verarbeitet keine Pipe.
type datei.reg >neu.reg
rpl -q -e "\\\r\n  " "" neu.reg  

cu paulepank
Highend01
Highend01 14.07.2009 um 13:01:58 Uhr
Goto Top
Hallo paulepank,

<quote>
es geht ja nicht nur um \CRLF, sondern die 2 nachfolgenden Leerzeichen (auf der nächsten Zeile) müssen auch mit ersetzt werden.
</quote>

Hatte ich nicht vergessen face-smile Steht im Titel drin und auch in der Zeile:

Kennt jemand eine Möglichkeit diese Zeilen nach dem "\(CRLF) " zu durchsuchen und dieses gegen  
"" (leerer Wert) zu ersetzen?  

Danke für die von dir vorgeschlagene Lösung! Funktioniert als eine zusätzliche Zeile vor der FOR-Schleife einwandfrei.

Der Parameter -q (für quiet) scheint zwar bei mir keine Auswirkung zu haben (es wird trotzdem gepostet, wie viele Ersetzungen vorgenommen wurden), aber ein
NUL 2>NUL am Ende der Zeile sorgt für Ruhe.

Danke und Gruß,
Highend