如何在 PowerShell 中查找和替换文本文件中的单词?


为了在 PowerShell 中搜索并替换文件中的单词,我们将使用字符串操作。事实上,PowerShell 中的 Get-Content 命令用于读取几乎任何类型的文件内容。在本文中,我们考虑以下所示的一个文本文件。

Get-Content C:\Temp\TestFile.txt

输出

PS C:\> Get-Content C:\Temp\TestFile.txt
# In case of linux, networkInterface names are of the form eth*
# In Windows, please use the network full name from Device Manager
networkInterfaces: ["Microsoft Hyper-V Network Adapter"
]

overrideMetricsUsingScriptFile: false

scriptTimeoutInSec: 60

scriptFiles:
- osType: windows
filePath: monitors/NetworkMonitor/scripts/windows-metrics.bat
- osType: unixBase
filePath: monitors/NetworkMonitor/scripts/unix-base-metrics.sh

以上输出是文件的内容,我们将对它进行操作。我们需要找到“NetWorkMonitor”这个词并将其替换为“Active”。请注意,以上文件是文本文件,因此我们不需要将其转换为字符串,但如果存在任何其他扩展名,则可能需要使用 .ToString() 命令或 Out-String 方法将输出转换为字符串,然后再执行任何操作。

现在,我们首先找到所需的字符串,并让我们使用 Select-String cmdlet 检查需要替换多少行。

(Get-Content C:\Temp\TestFile.txt) | Select-String -Pattern "NetworkMonitor"

输出

PS C:\> (Get-Content C:\Temp\TestFile.txt) | Select-String -Pattern "NetworkMonitor"
   filePath: monitors/NetworkMonitor/scripts/windows-metrics.bat
   filePath: monitors/NetworkMonitor/scripts/unix-base-metrics.sh

我们发现有两行包含“NetworkMonitor”这个词。我们需要使用以下命令替换该单词。您也可以将 Get-Content 输出存储在变量中并在其上执行操作。

(Get-Content C:\Temp\TestFile.txt) -replace "NetworkMonitor","Active"

输出

PS C:\> (Get-Content C:\Temp\TestFile.txt) -replace "NetworkMonitor","Active"
# In case of linux, networkInterface names are of the form eth*
# In Windows, please use the network full name from Device Manager
networkInterfaces: ["Microsoft Hyper-V Network Adapter"
]

overrideMetricsUsingScriptFile: false

scriptTimeoutInSec: 60

scriptFiles:
- osType: windows
filePath: monitors/Active/scripts/windows-metrics.bat
- osType: unixBase
filePath: monitors/Active/scripts/unix-base-metrics.sh

上述命令替换了文件内容,但尚未保存,因此要保存更新后的文件,我们将使用 Set-Content 命令,最终代码如下:

(Get-Content C:\Temp\TestFile.txt) -replace "NetworkMonitor","Active" | Set-Content
C:\Temp\Testfile.txt -Verbos

您也可以选择不同的路径来保存文件。如果文件是只读的,则需要在 Set-Content cmdlet 中使用 -Force 参数。

更新于:2020年9月3日

浏览量 1K+

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.