[英]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.