2016-05-06 3 views
1

mit Ich habe den folgenden Befehl ein:Proper Formatierung .csv, wenn xmlstarlet -f

cat PathFiles.txt | xargs xml sel -T -t -f -m /XML/Path -v "concat(value1,',',value2)" -n > test.csv 

PathFiles.txt enthält XML-Dateien

COLORADO.xml 
ALASKA.xml 
CALIFORNIA.xml 
WASHINGTON.xml 
OREGON.xml 

Es wird eine Ausgabe wie so:

#test.csv 
COLORADO.xmlvalue1,value2 
value1,value2 
value1,value2 
value1,value2 
ALASKA.xmlvalue1,value2 
value1,value2 
value1,value2 
value1,value2 
...etc 

Mein Problem ist COLORADO.xmlvalue1,value2ALASKA.xmlvalue1,value2 wenn ich es brauche, um

zu sein
COLORADO.xml 
value1,value2 
value1,value2 
value1,value2 
value1,value2 
ALASKA.xml 
value1,value2 
value1,value2 
value1,value2 
value1,value2 

Referenzierung zurück zum xml sel -f zur Ausgabe wird der Dateiname, ich fühle mich wie ich eine neue Zeile benötigen (?) Zwischen dem, was ich trennen will .. Ich versuchte -f \n aber das hat nicht funktioniert, dann fand ich heraus, dass Ich verwende bereits den Befehl newline -n am Ende der xml sel Befehl. Ist das möglich? Sollte ich mir vielleicht bei der Ausgabe nach .txt und der Verwendung von grep oder awk umsehen, um es zu trennen?

+0

[Sehen Sie hier] http://stackoverflow.com/questions/14952640/xmlstarlet-removing-linefeed –

Antwort

1

zum xml sel -f Referenzierung wieder der Dateiname zur Ausgabe verwendet wird, fühle ich mich wie eine neue Zeile benötigen (?) Zwischen dem, was ich trennen will .. Ich versuchte -f \n aber das hat nicht funktioniert, dann fand ich heraus, dass Ich verwende bereits den Befehl newline -n am Ende der xml sel Befehl.

-n Befehl setzen einen weiteren Kurz nach dem -f:

< PathFiles.txt xargs xml sel -T -t -f -n -m /XML/Path -v "concat(value1,',',value2)" -n > test.csv 
+0

Das funktionierte perfekt, danke! – buzzin