首页 > 解决方案 > 仅替换文本文件特定行中的数字

问题描述

我有一个像这样具有唯一 IP 的文本文件

172.21.2.15|3
172.33.3.45|6
172.15.12.5|2

我需要根据 IP 找到一个特定的行,然后替换分隔符后的数字,将当前值加一。

到目前为止,我只能以这种方式找到该行

$client = "172.33.3.45"
$line = gc C:\myfile.txt | select-string $client | Select-Object -ExpandProperty Line

但是即使我已经进行了几次搜索,我也不知道如何进行替换。

如何将文件中此 IP 的数字加 1?

标签: regexpowershellreplace

解决方案


尝试这个 :

$IPToFind='172.33.3.45'
$File=C:\myfile.txt

$Contentcsv=import-csv $File -Delimiter '|' -Header IP, ID
$Contentcsv | %{if($_.IP -eq $IPToFind){$_.ID=[int]$_.ID+1}; "{0}|{1}" -f $_.IP, $_.ID} | Out-File $File

如果您需要更多解释:

$IPToFind='172.33.3.45'

$Contentcsv=import-csv "C:\temp\test.txt" -Delimiter '|' -Header IP, ID
$Contentcsv | Foreach{

    #modify value if IP is founded
    if($_.IP -eq $IPToFind)
    {
    $_.ID=[int]$_.ID+1
    }; 

    #send tou output with -f (-format operator)
    "{0}|{1}" -f $_.IP, $_.ID

} | Out-File "C:\temp\test.txt"

推荐阅读