powershell匹配字符串,然后替换另一个字符串
我想使用PowerShell操作文件。以制表符分隔的文件如下所示: 资料 部门1 数据1 部门1 工作 部门1 工作1 部门1 我想找到以Work开头的记录,并用NewVal替换Sector1。输出应如下所示: 资料 部门1 数据1 部门1 工作 纽瓦尔 工作1 纽瓦尔 我以前可以在UNIX中通过以下方式完成此操作: s/Work/Sector1/NewVal 但我想不出与PowerShell等效的东西powershell匹配字符串,然后替换另一个字符串,powershell,Powershell,我想使用PowerShell操作文件。以制表符分隔的文件如下所示: 资料 部门1 数据1 部门1 工作 部门1 工作1 部门1 我想找到以Work开头的记录,并用NewVal替换Sector1。输出应如下所示: 资料 部门1 数据1 部门1 工作 纽瓦尔 工作1 纽瓦尔 我以前可以在UNIX中通过以下方式完成此操作: s/Work/Sector1/NewVal 但我想不出与PowerShell等效的东西 任何帮助都将不胜感激。谢谢。只要源文件包含标题列、键和值,
任何帮助都将不胜感激。谢谢。只要源文件包含标题列、键和值,以下内容就可以完成此操作并写入新的csv文件。请注意,这里的contains方法是区分大小写的工作模式匹配
import-csv .\sourcefile.csv | foreach-object {
if (($_.key).contains("Work")) {
$_.value = "NewVal"
}
$_ | export-csv -Append .\newFile.csv -NoTypeInformation
}
您可以使用正则表达式匹配来轻松完成此操作
获取内容C:\Path\To\File.txt | ForEach{$\u-replace?如果他想保持它是制表符分隔的,他需要导出CSV-Delim t。\newfile.CSV-notype`谢谢!这真的很接近。我得到一个错误:设置内容:进程无法访问文件“C:\Path\to\file.txt”,因为它正被另一个进程使用。我已确认该文件上没有其他句柄。似乎是be阻塞自身。-Force不起作用。正在考虑写入临时文件,然后将其重命名为原始文件。是否有更好的解决方案?可以在大部分命令周围加括号,使其完成所有替换,然后写入文件。获取内容C:\Path\to\file.txt | ForEach{$\替换?