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-Key: 3939791047

Url: https://administrator.de/contentid/3939791047

Printed on: April 27, 2024 at 03:04 o'clock

Member: Dani
Dani Sep 14, 2022 at 14:42:38 (UTC)
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
Member: Crusher79
Crusher79 Sep 14, 2022 at 14:46:03 (UTC)
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
Mitglied: 3803037559
Solution 3803037559 Sep 14, 2022 updated at 14:54:04 (UTC)
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
Member: CompuBatch
CompuBatch Sep 14, 2022 at 15:27:21 (UTC)
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
Member: Dani
Solution Dani Sep 14, 2022 updated at 15:30:14 (UTC)
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
Mitglied: 3803037559
3803037559 Sep 14, 2022 updated at 16:01:18 (UTC)
Goto Top
Jepp, so isses.
Bedeutung von Regex-Ausdrücken kannst du hier nachlesen: Reguläre Ausdrücke
Mitglied: 3803037559
3803037559 Sep 15, 2022 at 08:17:29 (UTC)
Goto Top
Bitte dann auch How can I mark a post as solved? nicht vergessen.
Member: erikro
erikro Sep 15, 2022 at 08:58:42 (UTC)
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.
Mitglied: 3803037559
Solution 3803037559 Sep 15, 2022 updated at 09:21:06 (UTC)
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.