2016-03-28 12 views
1

Ich habe eine XML-Format-Datei zum Massenladen in SQL Server 2008. Ich muss die Instanz TERMINATOR="\r\n" durch TERMINATOR="\n" ersetzen. Ich versuche, das Befehlszeilenprogramm FART.exe zu verwenden. Egal wie ich es versuche, ich kann das Dienstprogramm nicht erkennen, um die Charaktere zu erkennen.Wie ersetzen r n (Literal) mit n mit FART.exe

ich versucht habe, als Kombinationen des Fundes String übergeben und ersetzen string:

\r\n \n 
"\r\n" "\n" 
""\r\n"" ""\n"" 
^\r^\n ^\n 
TERMINATOR=""\r\n"" TERMINATOR=""\n"" 
TERMINATOR=""^\r^\n"" TERMINATOR=""^\n"" 

und viele, viele weitere Kombinationen. Jeder Artikel, den ich über das Verlassen von DOS Befehlen schreibe, sagt mir etwas anderes und ich habe sie alle ohne Glück versucht. Die wirklich seltsame Sache ist, dass nicht nur die Verwendung von \r\n \n nicht tun, was ich tun soll (ersetzen Sie die Literale), aber es ersetzt nicht die Wagenrücklauf + Zeilenvorschub Zeichen am Ende jeder Zeile in der Datei.

Die Formatdatei muss ich bearbeiten. Ich glaube, die Linie, die ich in rot unterstrichen habe ein Problem verursacht:

Das Befehlsfenster Ausgabe von Jrepl aufrufen. Es ist offensichtlich, dass das Dienstprogramm ein Problem mit der roten unterstrichen Linie von der anderen Screenshot hat:

Antwort

1

So ersetzen Sie alle \r\n Literale mit \n, verwenden Sie einfach:

fart yourFile.xml \r\n \n 

Um nur ersetzen innerhalb größerer String TERMINATOR="\r\n", dann verwenden:

fart -C yourfile.xml TERMINATOR=\x22\\r\\n\x22 TERMINATOR=\x22\\n\x22 

ich ziehe es 0.123.390 verwenden- Es ist viel leistungsfähiger als FART, da es reguläre Ausdrücke verwenden kann, und es verfügt über eine Reihe zusätzlicher erweiterter Funktionen. Die einzige Einschränkung in Bezug auf FART besteht darin, dass nur eine Datei gleichzeitig verarbeitet werden kann.

Um alle \r\n Literale mit \n zu ersetzen:

jrepl \r\n \n /l /f yourFile.xml /o - 

spezielleren mit einem wörtlichen Suchbegriff Um mit Zitat als \q und Backslash als \\ entkommen:

jrepl "TERMINATOR=\q\\r\\n\q" "TERMINATOR=\q\\n\q" /x /l /f yourFile.xml /o - 

oder mit einem regulären Ausdruck :

jrepl "(TERMINATOR=\q)\\r(?=\\n\q)" "$1" /x /f yourFile.xml /o - 
+0

Hallo Dbenham. Leider war das erste, was ich ausprobiert habe "furz yourFile.xml \ r \ n \ n" und es hat nicht funktioniert. Ich erhalte das Ergebnis "0 Vorkommen in 0 Datei (en) ersetzt. Ich muss nur in einer Datei auf einmal finden und ersetzen, also denke ich, dass ich stattdessen Ihr jrepl Kommandozeilenprogramm versuchen werde. Danke für die Hilfe! – Ognennyy

+0

@Ognennyy - Hmmm. Das ist seltsam, weil ich mit FART getestet und es schien für mich zu arbeiten. Aber viel Glück mit JREPL – dbenham

+0

Ich habe zwei Screenshots oben, die ich hoffe, wird helfen. Wenn ich nur einen Text erstellen Datei mit einer Zeile darin (Terminator = "\ r \ n"), dann jrepl \ r \ n \ n/l/f "test.txt"/o "test_new.txt" aufrufen, es funktioniert einwandfrei und ersetzt es durch (Terminator = "\ n"). Allerdings scheint mir, dass Jrepl meine XML-Datei nicht mag. Sehen Sie sich meinen Screenshot an. Die Zeile, die ich in der XML-Datei markiert habe, enthält zwei Links.Der andere Screenshot des cmd-Fensters, wenn ich die Ausgabe an stdout sende, zeigt deutlich, dass es dort ein Problem gibt. Was denkst du @dbenham? Wird Jrepl nicht mit einer vollständigen xml-Datei arbeiten? – Ognennyy