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
GELÖST

CSV-Datei Komma durch Semikolon ersetzen

Frage Entwicklung Batch & Shell

Mitglied: FalkIT

FalkIT (Level 1) - Jetzt verbinden

19.02.2015, aktualisiert 20.02.2015, 2502 Aufrufe, 8 Kommentare

Hi Zusammen,
ich suche eine Möglichkeit in einer Komma getrennten CSV Datei alle Kommas die als Trenner dienen durch ein Semikolon zu ersetzen.
Das Problem hierbei ist, dass in der Datei auch Komma getrennte Werte auftauchen, bei denen kein Semikolon gesetzt werden Darf.

Bsp:

aus
"Artikel","Menge","Preis"
"Hammer","10","1,50"

soll
"Artikel";"Menge";"Preis"
"Hammer";"10";"1,50"

werden. Das ganze sollte automatisch ablaufen, also nicht Excel starten und die Datei mit einem anderen Trennzeichen abspeichern (fall Excel diese Funktion bietet).
Ist sicherlich ein Problem, welches häufiger auftritt, hat hier jemand eine Lösung?

Danke schon mal

Falk
Mitglied: Xaero1982
19.02.2015 um 20:09 Uhr
Moin,

nichts für Ungut, aber google?
Richtig, es tritt häufiger auf und wurde hier schon xx mal diskutiert.

Und wenn du einen String suchst, der das besagt Komma bei "1,5" nicht ersetzt nimmst du "," und ersetzt es durch ";" Denn 1,5 hat kein ","

Grüße
Bitte warten ..
Mitglied: FalkIT
20.02.2015 um 09:41 Uhr
Moin Xaero,
natürlich habe ich bei google schon nachgesehen, aber nichts gefunden was mein Problem wirklich löst.
Deine Lösung alle "," zu ersetzen hilft mir nicht weiter, da es natürlich auch Datensätze gibt, bei denen einige Werte nicht gefüllt sind.
Zum besseren Verständnis noch ein Beispiel:

"Artikel","Menge","Preis"
"Hammer","10","1,50"
"Schraube",,"0,80"

Trotzdem danke für die schnelle Antwort
Bitte warten ..
Mitglied: 114757
LÖSUNG 20.02.2015, aktualisiert um 13:35 Uhr
Moinsens,
as simple as that
01.
powershell -Executionpolicy Bypass -command "&{$path = 'c:\daten.csv'; (Import-csv $path -Delimiter ',' -Encoding Default) | Export-Csv $path -Delimiter ';' -NoType -Encoding Default}"
Gruß jodel32
Bitte warten ..
Mitglied: FalkIT
20.02.2015 um 11:59 Uhr
Hi Jodel,
danke für die Antwort, wie ich den code verstehe geht das auf jeden Fall in die richtige Richtung, leider spuckt er mir aber einen Fehler aus. Von der Powershell habe ich leider keine Ahnung, kann daher nicht viel mit der Meldung bzw. mit den Befehlen in deiner Antwort anfangen. Kannst du hier noch einmal Helfen?
Folgende Fehlermeldung wird ausgegeben:
01.
Import-Csv : Es wurde kein Parameter gefunden, der dem Parameternamen "Encoding" entspricht. 
02.
Bei Zeile:1 Zeichen:69 
03.
+ &{$path = 'c:\daten.csv'; (Import-csv $path -Delimiter ',' -Encoding <<<<  Default) | Export-Csv 
04.
 -NoType -Encoding Default} 
05.
    + CategoryInfo          : InvalidArgument: (:) [Import-Csv], ParameterBindingException 
06.
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.ImportCsvCommand
Danke schon mal!

Falk
Bitte warten ..
Mitglied: 114757
LÖSUNG 20.02.2015, aktualisiert um 14:37 Uhr
Folgende Fehlermeldung wird ausgegeben:
dann hast du noch eine alte Powershell installiert (PS2.0), indem Fall lasse den Parameter -Encoding einfach weg:
01.
powershell -Executionpolicy Bypass -command "&{$path = 'c:\daten.csv'; (Import-csv -Path $path -Delimiter ',') | Export-Csv -path $path -Delimiter ';' -NoTypeInformation -Encoding Default}"
p.s. den Pfad zur CSV-Datei musst du natürlich anpassen ;-P
Bitte warten ..
Mitglied: FalkIT
20.02.2015, aktualisiert um 13:46 Uhr
Vielen Dank, macht genau was es soll!!

Gruß
Falk

edit:
Leider doch noch nicht ganz, ich habe den selben Befehl nun auf die eigentliche CSV-Datei angewandt und bekomme folgende Meldung:
01.
Import-Csv : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "name" ungültig ist. Ändern Sie den 
02.
Wert des Arguments "name", und führen Sie den Vorgang erneut aus. 
03.
Bei Zeile:1 Zeichen:60 
04.
+ &{$path = 'C:\Users\Ternum\Desktop\daten2.csv'; (Import-csv <<<<  $path -Delimiter ',') | Export-Csv $path -Delimiter 
05.
 ';' -NoType} 
06.
    + CategoryInfo          : InvalidArgument: (:) [Import-Csv], PSArgumentException 
07.
    + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.ImportCsvCommand
Das "Argument "name"" gibt es weder in der CSV noch in deinem Befehl (zumindest nicht für mich ersichtlich). Hast du noch eine Idee wo hier das Problem liegt.

Danke!
Bitte warten ..
Mitglied: 114757
20.02.2015 um 14:43 Uhr
Das muss an deiner CSV-Datei liegen, vermutlich ist sie irgendwo fehlerhaft formatiert oder hat doppelte Spaltennamen.
Bitte warten ..
Mitglied: FalkIT
20.02.2015 um 15:04 Uhr
Das war's, das vorletzte Feld verursacht den Fehler. Ich weiß nicht, was an dem Feld falsch sein soll, aber das sollte sich ja lösen lassen.

Vielen Dank und ein schönes Wochenende!

Falk
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...