2009-04-08 4 views
0

Also habe ich diese große Datei mit festen Zeilen Länge. Ich möchte einen Fund durchführen und auf einer Position in einer Charakterlinie ersetzen.Regulärer Ausdruck zum Suchen/Ersetzen in einer Fix Length Datei

Beispiel:

xxxxxxx  010109 xxxxxx xxxxx 
xxxxxxx  010309 xxxxxx xxxxx 
xxxxxxx  021506 xxxxxx xxxxx 
xxxxxxx  041187 xxxxxx xxxxx 

So in diesem Fall würde ich beginnen jeden Wert finden wollen auf Position 13 durch Position 18 und ersetzen Sie es mit 010107.

Kann jemand mir helfen, wie man den Regex dafür formulieren?

Sehr geschätzt.

Antwort

1

Editiert: nach der Prüfung, Notepad ++ unterstützt nicht die {n} Methode eine genaue Zahl zu definieren von verkohlt

Dies funktioniert, auf Ihre Daten getestet:

Suche:

^(............)...... 

ersetzen:

\1010107 
+0

+1 für die Arbeit in Notepad ++. –

+0

Danke ich denke ich kann das funktionieren. – homerjay

0

dieses Suchmuster Versuchen:

^(.{12})\d{6} 

Und diese als Ersatz Ausdruck:

\1010107 
0

s/^ (?:. {12}) ({6}.) (:. *) $/NNNNNN/

NNNNNN ersetzt durch die gewünschte Anzahl

0

Etwas wie folgt:

 
sed 's/^\(.\{12\}\).\{6\}\(.*\)$/\1010107\2/' 

sollte den Trick (Escape für die Befehlszeile verwenden)

0

Nur für den Datensatz benötigen Sie keinen regulären Ausdruck für so etwas. Eine einfache Aufteilung oder irgendeine Art von Entpackungsfunktion wäre in Ordnung.