Top-Themen

Aktuelle Themen (A bis Z)

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

Bearbeitung einer CSV Datei an bestimmter Spalte

Frage Entwicklung

Mitglied: IT-Wurzel

IT-Wurzel (Level 1) - Jetzt verbinden

13.08.2014 um 10:58 Uhr, 890 Aufrufe, 13 Kommentare, 2 Danke

Hallo an alle,

ich bin gerade diesem Forum beigetreten, und wünsche allen erst einmal ein herzliches "Hallo" ...

nun zu meiner Frage:
ich habe als Ausgang eine CSV-Datei (Auszug siehe folgend) mit folgenden Inhalten (plus "X" weitere Zeilen):

01.
'User-Nachname1';'User-Vorname1';'(OR)';'4444';'Abt. 1';'' 
02.
'User-Nachname2';'User-Vorname2';'';'+111-2-3333333';Abt. 2;'' 
03.
'User-Nachname3';'User-Vorname3';'';'+111-2-3333333';Abt. 2;'' 
04.
'User-Nachname4';'User-Vorname4';'';'4444';'Abt. 1';''
nun besteht die Besonderheit darin (das ";" ist der delimiter), das in der 4. Spalte (Telefonnummer), eine Vorwahl und eine Rufnummer + der vorhandenen Durchwahl eingefügt werden soll (z.B. +49-40-1234-Durchwahl), aber,

hierbei ist die Besonderheit, dass auch schon komplette Telefonnummern existieren, die übergangen werden sollen.
Also nur die Zeilen "bearbeitet" werden, die nur 4 Stellen (Durchwahl) der Telefonnummer beinhalten.

Jetzt habe ich mich schon an Batch und VBS versucht, komme aber partout zu keinem brauchbaren Ergebnis (bin noch ein Neuling in der Batch und/oder VBS Programmierung.
daher würde ich mir wünschen, wenn die Lösung eine Batch-, PowerShell- oder vbs-Datei wäre

Vielen Dank schon mal im voraus für Eure Unterstützung
IT-Wurzel
Mitglied: LordXearo
13.08.2014, aktualisiert um 11:09 Uhr
Hallo IT-Wurzel,

kannst du nicht die CSV in OpenOffice Calc / MS Excel einlesen, bearbeiten und wieder als csv abspeichern?

Gruß
Xearo
Bitte warten ..
Mitglied: colinardo
13.08.2014, aktualisiert um 11:11 Uhr
Moin IT-Wurzel,
das ist kein Problem. Ist deine CSV-Datei wirklich so formatiert, also hat keine Überschriften und werden einzelne Hochkommas für den Text anstatt doppelten verwendet ?

Grüße Uwe
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 11:18 Uhr
Hallo Xearo,

leider nein, da die csv-Datei immer wieder neu erzeugt wird, und ich gerne einen Automatismus verwenden möchte, da auch der Inhalt der csv_Datei immer wieder variieren kann. (Die csv-Datei wird aus dem AD erzeugt).

Gruß,
IT-Wurzel
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 11:22 Uhr
Hallo Uwe,

ja, die csv-Datei hat in diesem fall keine Überschrift und die Text-Elemente werden, mit Hochkommas erzeugt. eine (als Exe kompilierte) Pearl-Datei erzeugt aus dem AD diese csv-Datei ohne Überschriften, welche dann in unsere Telefonanlage eingelesen werden soll (Adressbuch), halt nur mit
vollständiger Telefonnummer.


Gruß,
IT-Wurzel
Bitte warten ..
Mitglied: colinardo
LÖSUNG 13.08.2014, aktualisiert um 12:51 Uhr
na dann z.B. mit Powershell so:
01.
$fileIN = "C:\file_in.csv" 
02.
$fileOUT = "C:\file_out.csv" 
03.
$preNumber = '+49-40-1234-' 
04.
$content = (gc $fileIN | out-string).Replace("'","""") 
05.
$objCSV =  ConvertFrom-Csv $content -Delimiter ";" -Header "1","2","3","4","5","6" 
06.
$objCSV | ?{$_.'4' -match "^\d{4}$"} | %{$_.'4' = "$preNumber$($_.'4')"} 
07.
($objCSV | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | select -skip 1 | out-string).Replace("""","'") | set-content $fileOUT
oder ebenfalls mit Powershell in der Regular Expressions-Variante:
01.
$fileIN = "C:\file_in.csv" 
02.
$fileOUT = "C:\file_out.csv" 
03.
$preNumber = '+49-40-1234-' 
04.
$content -replace "^([^;]*;[^;]*;[^;]*;')(\d{4})('.*)$",('$1'+$preNumber+'$2$3') | set-content $fileOUT
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 12:23 Uhr
Hallo Uwe,

wow, danke für die schnelle Antwort... das Skript wirft mir eine Fehlermeldung aus:

ERROR: Unerwartetes Token ".4" im Ausdruck oder in der Anweisung.
ERROR: Bei C:\!Teleliste_CSV_ändern.ps1:5 Zeichen:19
ERROR: + $objCSV | ? { $_.4 <<<< -match "^\d{4}$" } | %{ $_.4 = "+49-40-1234-$($_.4)" }
ERROR: + CategoryInfo : ParserError: (.4:String) [], ParseException
ERROR: + FullyQualifiedErrorId : UnexpectedToken
ERROR:

hast Du eine Idee?

Vielen Dank & Gruß,
Mario
Bitte warten ..
Mitglied: colinardo
13.08.2014, aktualisiert um 12:44 Uhr
OK, dann hast du noch eine ältere Powershell-Version. Mindestens PS3.0 benötigt.
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 12:38 Uhr
leider funktioniert das auch nicht, jetzt kommt folgende FM:

ERROR: Fehler beim Aufrufen der Methode, da [System.Object[]] keine Methode mit dem Namen "Replace" enthält.
ERROR: Bei C:\!Teleliste_CSV_ändern.ps1:4 Zeichen:32
ERROR: + $content = (gc $fileIN).Replace <<<< ("'", """")
ERROR: + CategoryInfo : InvalidOperation: (Replace:String) [], RuntimeException
ERROR: + FullyQualifiedErrorId : MethodNotFound
ERROR:

...
Bitte warten ..
Mitglied: colinardo
13.08.2014, aktualisiert um 12:45 Uhr
einen moment, war noch nicht kompett für PS 2.0 angepasst. Würde dir aber raten auf mindestens PS 3.0 aufzurüsten ...
so jetzt läufts auch mit PS 2.0

UPDATEN !!
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 12:49 Uhr
GRANDIOS ...

jetzt läuft es, und ich gelobe auf PS 3.0 aufzurüsten


Vielen, vielen Dank
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 16:47 Uhr
Hi,

zu Deiner super Lösung von Oben, habe ich gerade noch einen Fall in der csv-Datei gefunden, der bei ca. 2000 Zeilen erst weiter unten vorkam.
Nämlich das in Spalte 4 auch der Ausdruck
'User-Nachname5';'User-Vorname5';'';'0015112345678';'Abt. 1';''
vorkommen kann.

Jetzt habe ich versucht - auch aus Handbüchern - abzuleiten, wie ich Dein Skript um folgende Änderung in der Zieldatei erweitern kann, leider habe ich so gar kein Erfolg dabei gehabt. Kannst Du mir helfen?

Ergebnis: 'User-Nachname5';'User-Vorname5';'';'+49-15112345678';'Abt. 1';''

Also anstelle der ersten beiden "00" einfach ein "+49-" voranstellen.

Vielen Dank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 13.08.2014, aktualisiert um 19:56 Uhr
nur Zeile 7 ist hinzugekommen
01.
$fileIN = "C:\file_in.csv" 
02.
$fileOUT = "C:\file_out.csv" 
03.
$preNumber = '+49-40-1234-' 
04.
$content = (gc $fileIN | out-string).Replace("'","""") 
05.
$objCSV =  ConvertFrom-Csv $content -Delimiter ";" -Header "1","2","3","4","5","6" 
06.
$objCSV | ?{$_.'4' -match "^\d{4}$"} | %{$_.'4' = "$preNumber$($_.'4')"} 
07.
$objCSV | ?{$_.'4' -match '^00.{3,}'} | %{$_.'4' = $_.'4' -replace '^00','+49-'} 
08.
($objCSV | ConvertTo-Csv -Delimiter ";" -NoTypeInformation | select -skip 1 | out-string).Replace("""","'") | set-content $fileOUT
Regular Expressions Tutorial
und wenn du jetzt mit noch mehr Varianten kommst, solltest du mal folgenden Thread lesen, hatten wir vor ein paar Tagen schonmal das ganze Theater:

Grüße Uwe
Bitte warten ..
Mitglied: IT-Wurzel
13.08.2014 um 19:56 Uhr
Spitze, ich hatte einfach zu kompliziert gedacht und dementsprechend in meiner Lektüre nichts gefunden.
Vielen Dank.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Bearbeitung einer csv-Datei
Frage von VolkerKuBatch & Shell13 Kommentare

Hallo, ich habe folgebndes Problem,. Ich habe ein eine Tabelle in iner csv-Datei. Die Spalten werden durch Semikolon getrennt. ...

Batch & Shell
Auslesen bestimmter Spalten aus csv
gelöst Frage von Berti82Batch & Shell6 Kommentare

Hallo, Ich bekomme regelmäßig csv-Dateien mit ca. 77 Spalten und prinzipiell unbegrenzten Zeilen. Diese muss ich eindampfen auf 5 ...

VB for Applications
Bestimmte Spalten aus CSV-Datei auslesen (VBS)
gelöst Frage von GurkenhobelVB for Applications9 Kommentare

Hallo Community, wieder benötige ich einmal kompetente Hilfe. Mein Script zum Auslesen bestimmte Spalten aus CSV-Dateien (über 200 " ...

Batch & Shell
Über eine Batch Datei (oder Konsole) bestimmte Spalten einer CSV Datei entfernen bzw. nur bestimmte Spalten behalten
gelöst Frage von vcdweltBatch & Shell4 Kommentare

Hallo, ich würde gerne per Batch Datei den Inhalt einer CSV Datei bearbeiten. Ursprüngliche Datei: Header1;Header2;Header3:Header4;Header5;Header6 Wert1;Wert2;Wert3;Wert4;Wert5;Wert6 Wert11;Wert22;Wert33;Wert44;Wert55;Wert66 Ziel ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 3 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 6 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 6 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 10 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...