簡體   English   中英

如何從CSV文件的每一行中刪除第一列中的第一個字符?

[英]How to remove first character in the first column from each row in CSV file?

我的CSV文件具有列標題,然后在此之后的每一行中,第一列中的第一個字符以“ +”開頭。

如何從每行(第一行標題行除外)的第一行中刪除第一個字符“ +”? 謝謝。

樣本文件:

"col1","col2","col3"...
+"datacol1a","datacol2a","datacol3a"
+"datacol1b","datacol2b","datacol3b"
+"datacol1c","datacol2c","datacol3c"

所需結果:

"col1","col2","col3"...
"datacol1a","datacol2a","datacol3a"
"datacol1b","datacol2b","datacol3b"
"datacol1c","datacol2c","datacol3c"

我嘗試了此powershell代碼(FindReplace.ps1),但是它不起作用:

param([string]$CSVFile="c:\myfolder\myCsv.csv")
(gc $CSVFile) -replace "^+"

如果我使用此powershell代碼,它還會刪除標題行中的第一個字符(我不想這樣做)。 除了標題行(第1行)之外,我該怎么做?

Get-Content -Path $CSVFile | ForEach-Object { $_.substring(1,$_.Length - 1) }

我從BAT文件中調用此powershell代碼

powershell -file FindReplace.ps1 -CSVFile "c:\myfolder\myCsv.csv" > 
"c:\myfolder\myCsv2.csv"

由於-replace使用正則表達式,因此需要轉義+號。 它是一個特殊的字符。 您需要告訴腳本您要替換為什么。 嘗試這個:

(Get-Content .\\csv1.csv) -replace ('^\\+', '') | Out-File .\\csv2.csv

這可能是另一種解決方案。

$csv = get-Content C:\Temp\csv1.csv
$header = $csv | Select-Object -First 1
$data = $csv | Select-Object -skip 1 |  ForEach-Object { $_.substring(1, 
$_.Length - 1) }
$($header; $data) | Set-Content -Path C:\Temp\csv2.csv

編輯以添加@TheMadTechnician解決方案。

 Get-Content C:\Temp\text.csv| ForEach-Object {$_.trimstart('+')} | set-content c:\temp\csv232.csv

我省略了別名以方便閱讀

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM