Powershell替换功能 - 用数字替换线

时间:2014-07-17 16:30:08

标签: powershell replace

基本上我试图找到一种方法来放置一个变量来替换powershell中的一行。

当前脚本:

$switches = get-outlookinbox | where subject -eq "Hello"
    $e = $switches.body
    $e = $e.replace("Hello:","")
    $e = $e.replace(" Number","")
    $e = $e.replace(":1","")
    $e = $e.replace(":2","")
    $e = $e.replace(":3","")
    $e = $e.replace(":4","")
    $e = $e.replace(":99","")

你可以看到我要去的地方......但是我不想要99行替换代码,对此有何想法? 此外,数字必须:在它的前面,否则替换将破坏文件,因为它只包含IP和端口,它是我想从输出中删除的端口。

3 个答案:

答案 0 :(得分:2)

您可以使用简单的foreach loop并从991进行迭代:

foreach ($n in 99..1)
{
    $e = $e.Replace(":$n", " ")
}

或者,如果您更喜欢一行:

foreach ($n in 99..1) { $e = $e.Replace(":$n", " ") }

演示:

PS > $mystr = "a:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20b"  
PS > foreach ($n in 20..1) { $mystr = $mystr.replace(":$n", "") }
PS > $mystr
ab 
PS > 

答案 1 :(得分:2)

正则表达式:regex101.com

$e = $e -replace ':\d+',""

无需循环

答案 2 :(得分:2)

当你在它的时候,也可以把它们全部拿走:

$e -replace 'Hello:| Number|:\d{1,2}'