使用powershell更改列中的值

roejwanj  于 2023-10-18  发布在  Shell
关注(0)|答案(2)|浏览(128)

我有一个五列的CSV文件。最后一栏是学生的年级。我想做的是根据等级级别更改该列的值。例如,如果等级是12,我想把它改为2016年,11改为2017年,以此类推。
更新:我没有得到它的半工作使用以下:

Get-Content users.csv | ForEach-Object -Process {$_ -replace '12','2016'} | Set-Content users1.csv

如果学生证里有个12,也会变成2016年。例如,120045变为20160045

e1xvtsh3

e1xvtsh31#

您可以导入CSV,在foreach中循环它,并使用$_(this)操作符,然后将IST导出为CSV
Somesthing like:

# import CSV
$list = import-csv P:\ath\to\file.csv -Delimiter ";" -Encoding Standard
# % means foreach
$list | % {
  # The grades is the key for each line
  # the first line of your csv represent the keys you can use
  # e.g. first colum: Name | Grade | Class
  # $_.Name | $_.Grade | $_.Class are your keys for every entry (2nd line and above)

  # here you can work with your grades an do what you want
  if($_.Grade -eq 11){
     # set a new value to the grade in the actual line
     $_.Grade = 2016
  }  
}

# now export the new list into csv
$list | export-csv P:\ath\to\new.csv -Delimiter ";" -NoTypeInformation

这应该是一个基本的工作。
Greetz Eldo.O

bmp9r5qi

bmp9r5qi2#

埃尔多,你的代码工作得很好。我不得不改变最后一行:

export-csv P:\ath\to\new.csv -Delimiter ";" -NoTypeInformation

$list | Export-Csv P:\ath\to\new.csv -Delimiter "," -NoTypeInformation

我还能够添加更多的if语句来完成我所需要的。

相关问题