powershell匹配字符串然后替换另一个

时间:2014-11-11 22:18:28

标签: powershell

我想使用PowerShell来操作文件。制表符分隔文件如下:

  

数据部门1   Data1 Sector1
  工作部门1   Work1 Sector1

我想查找以“Work”开头的记录,并将“Sector1”替换为“NewVal”。输出应如下所示:

  

数据部门1   Data1 Sector1
  工作 NewVal
  Work1 NewVal

我以前可以通过使用以下方法在UNIX中执行此操作:  S /工作/扇区1 /的的newval 但我无法弄清楚PowerShell的等价物。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

只要您的源文件包含标题列“key”和“value”,以下内容就能完成此操作并写入新的csv文件。请注意,此处的contains方法是与“工作”匹配的区分大小写的模式。

import-csv .\sourcefile.csv | foreach-object {
    if (($_.key).contains("Work")) {
        $_.value = "NewVal"
    }
    $_ | export-csv -Append .\newFile.csv -NoTypeInformation
}

答案 1 :(得分:0)

你可以使用RegEx匹配来解决这个问题。

Get-Content C:\ Path \ To \ File.txt | ForEach {$ _ -replace"(?< = ^ Work。*?\ s)Sector1"," NewVal"} | Set-Content C:\ Path \ To \ File.txt

相关问题