compubatch
Goto Top

Powershell - 1 Zeichen in einer CSV Spalte entfernen

Hallo liebe Gemeinde,

wenn ja, wie wäre es mit Powershell möglich ein das 1. Zeichen in der 1. Spalte zu entfernen:

Input CSV:

01234;12
02345;14

Output CSV:

1234;12
2345;14

Content-ID: 3939791047

Url: https://administrator.de/forum/powershell-1-zeichen-in-einer-csv-spalte-entfernen-3939791047.html

Ausgedruckt am: 17.04.2025 um 09:04 Uhr

Dani
Dani 14.09.2022 um 16:42:38 Uhr
Goto Top
Moin,
mit der Funktion substring ist das möglich. Nachstehend ein simples Beispiel:
$csv = @("01234;12","02345;14")  

foreach ($a in $csv) {
   $a.Substring(1)
}
Hab leider keinen Zugriff auf einen Rechner um es mit einer echten CSV Datei zu testen. Aber das Prinzip müsste das Gleiche bleiben.


Gruß,
Dani
Crusher79
Crusher79 14.09.2022 um 16:46:03 Uhr
Goto Top
Zitat von @Dani:

Moin,
mit der Funktion substring ist das möglich. Nachstehend ein simples Beispiel:
$csv = @("01234;12","02345;14")  

foreach ($a in $csv) {
   $a.Substring(1)
}
Hab leider keinen Zugriff auf einen Rechner um es mit einer echten CSV Datei zu testen. Aber das Prinzip müsste das Gleiche bleiben.


Gruß,
Dani

Ja das passt. grad getestet.

PS C:\Windows\system32> $csv = @("01234;12","02345;14")  

foreach ($a in $csv) {
   $a.Substring(1)
}
1234;12
2345;14
3803037559
Lösung 3803037559 14.09.2022 aktualisiert um 16:54:04 Uhr
Goto Top
Wenn das eh nur in der ersten Spalte is, as simple as
(Get-Content .\test.csv) -replace '^.' | Set-Content .\test.csv  
Cheers
certguy
CompuBatch
CompuBatch 14.09.2022 um 17:27:21 Uhr
Goto Top
Womit würde hier definiert werden, dass es das 1 Zeichen ist?

Zitat von @3803037559:

Wenn das eh nur in der ersten Spalte is, as simple as
(Get-Content .\test.csv) -replace '^.' | Set-Content .\test.csv  
Cheers
certguy
Dani
Lösung Dani 14.09.2022 aktualisiert um 17:30:14 Uhr
Goto Top
Moin,
Womit würde hier definiert werden, dass es das 1 Zeichen ist?
mit dem Regex >>>'^.'<<<. Der Punkt steht für ein beliebiges Zeichen. Das Zeichen ^ steht für Zeilenanfang.


Gruß,
Dani
3803037559
3803037559 14.09.2022 aktualisiert um 18:01:18 Uhr
Goto Top
Jepp, so isses.
Bedeutung von Regex-Ausdrücken kannst du hier nachlesen: Reguläre Ausdrücke
3803037559
3803037559 15.09.2022 um 10:17:29 Uhr
Goto Top
Bitte dann auch Wie kann ich einen Beitrag als gelöst markieren? nicht vergessen.
erikro
erikro 15.09.2022 um 10:58:42 Uhr
Goto Top
Zitat von @3803037559:

Wenn das eh nur in der ersten Spalte is, as simple as
(Get-Content .\test.csv) -replace '^.' | Set-Content .\test.csv  
Cheers
certguy

Das löscht aber auch das erste Zeichen in der Überschrift.
3803037559
Lösung 3803037559 15.09.2022 aktualisiert um 11:21:06 Uhr
Goto Top
Zitat von @erikro:
Das löscht aber auch das erste Zeichen in der Überschrift.
In seinem Beispiel waren aber keine Überschriften, sonst hätte ich das natürlich anderweitig gepostet face-smile.

Mit Überschriften dann so
$content = Get-Content -LiteralPath .\test.csv
$content,(($content | select -skip 1) -replace '^.') | Set-Content -LiteralPath .\test.csv  
oder objektorientierter
$csv = Import-csv -LiteralPath .\test.csv -Delimiter ";"  
$csv | %{$_.'SpalteXYZ' = $_.'SpalteXYZ'.Substring(1)}  
$csv | export-csv -LiteralPath .\test.csv -Delimiter ";" -NoTypeInformation -Encoding UTF8  

Jetzt hat der TO aber die Steilvorlage, wenns jetzt noch nicht geschnackelt hat dann weiß ich auch nicht.