Powershell搜索并替换字符串的一部分

时间:2015-10-20 16:22:49

标签: powershell search replace

我有一个包含以下内容的文件:

  

1的 2 第3
  4的 5 6
  7的 8 9
  XYZ
  ABC999XXXXXXX

我需要在文件中搜索3个数字字符,并根据用户输入替换第一个和第三个字符。如果用户输入字符1 = 0且字符3 = 9,我需要返回。

  

0的 2 9
  0的 5 9
  0 8 9

我正在尝试通过简单的搜索和替换来完成此操作,而无需为每个字符创建变量。另外值得注意的是,我需要搜索3个数字的标准,丢弃字母字符行。

请注意:这是我需要做的简化版本。情况很长,还有更多的领域,但我希望将它煮沸下来会给我一些我可以使用的东西。提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设条件与您所描述的一样,评论中建议的-replace操作应该只是您想要的。

您需要做的就是接受用户输入并将其插入到替换字符串中,如下所示:

# Get user input for the first digit
do{
    $a = Read-Host -Prompt "Input 1st digit"
} while ($a -notmatch "^\d$")

# Get user input for the third digit    
do{
    $b = Read-Host -Prompt "Input 3rd digit"
} while ($b -notmatch "^\d$")

# pattern that matches exactly 3 digits, captures the middle one
$pattern = "^\d(\d)\d$"

# replacement consisting of the user input and a reference to the capture group
$replace = "$a{0}$b" -f '${1}'

# Let's replace!
$InputObject = Get-Content "C:\my\file\path.txt"    
$InputObject -replace $pattern,$replace