Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell匹配字符串,然后替换另一个字符串_Powershell - Fatal编程技术网

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

powershell匹配字符串,然后替换另一个字符串,powershell,Powershell,我想使用PowerShell操作文件。以制表符分隔的文件如下所示: 资料  部门1 数据1  部门1 工作  部门1 工作1  部门1 我想找到以Work开头的记录,并用NewVal替换Sector1。输出应如下所示: 资料  部门1 数据1  部门1 工作  纽瓦尔 工作1  纽瓦尔 我以前可以在UNIX中通过以下方式完成此操作: s/Work/Sector1/NewVal 但我想不出与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{$\替换?