Powershell:修改文本

Powershell:修改文本,powershell,Powershell,好吧,我放弃!为什么这样不行?我只是想循环浏览一个csv文件,并用一些值替换第n列中的任何值 $source = "C:\blah.csv" (gc $source) | foreach{ $_.Split(',')[10] = 'something'} | sc $source 基本上,您正在尝试的是: $s = 'a,b,c,d,e' $s.Split(',')[4] = 'something' $s 这是行不通的,因为你没有给任何变量赋值 我可以将文件读取为csv(通过导入csv),

好吧,我放弃!为什么这样不行?我只是想循环浏览一个csv文件,并用一些值替换第n列中的任何值

$source = "C:\blah.csv"

(gc $source) | foreach{ $_.Split(',')[10] = 'something'} | sc $source

基本上,您正在尝试的是:

$s = 'a,b,c,d,e'
$s.Split(',')[4] = 'something'
$s
这是行不通的,因为你没有给任何变量赋值

我可以将文件读取为csv(通过
导入csv
),或者(如果它的结构非常简单)使用正则表达式:

$s = 'c,d,e', 'c,d,x', 'z,f,d'
$s | % { $_ -replace '(?<=([^,]*,){2}).*','something'}
$s='c,d,e','c,d,x','z,f,d'

$s |%{$U5;-replace'(?您能解释一下您想做什么以及“不起作用”是什么意思吗?特别是,您知道您想替换哪个值的字段的名称吗?或者它只是它的索引(10)已知?我想知道他是否在试图与“某物”进行比较,是否应该使用
-eq
?@Keith,对我来说,替换某些值更有意义。但你可能是对的。Peter没有告诉我们他想做什么。@Peter,看一下,例如,将其作为csv和…(由你决定);)