之后删除任何东西(点)。包括点

时间:2017-01-10 11:20:27

标签: powershell split

subdomain1.google.nl
subdomain1.subdomain2.google.com
subdomain1.facebook.com
subdomain1.subdomain2.facebook.com

我如何(通过Powershell)删除topleveldomain(TLD),以便我的结果如下:

subdomain1.google
subdomain1.subdomain2.google
subdomain1.facebook
subdomain1.subdomain2.facebook

2 个答案:

答案 0 :(得分:1)

你试试正则表达式模式或者你可以试试这个:

$string = 'subdomain1.google.nl'
[io.path]::GetFileNameWithoutExtension($string)

输出:

subdomain1.google

其实!我很好奇什么是最好的性能方法并猜测:

$results = @()
for ($i=1;$i -le 1000;$i++){
    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name 'Execution #' -Value $([int]$i)
    $obj | Add-Member -MemberType NoteProperty -Name 'IOPath_Ticks' -Value $(Measure-Command -Expression {[System.IO.Path]::GetFileNameWithoutExtension('subdomain1.google.nl')} | Select -ExpandProperty Ticks)
    $obj | Add-Member -MemberType NoteProperty -Name 'Regex_Ticks' -Value $( Measure-Command -Expression {'subdomain1.google.nl' -replace '\.[^.]*?$'} | Select -ExpandProperty Ticks)
    $results += $obj
}

平均

$results  |  Measure-Object -Property IOPath_Ticks  -Average

Count    : 1000
Average  : 129,978
Sum      : 
Maximum  : 
Minimum  : 
Property : IOPath_Ticks

$results  |  Measure-Object -Property Regex_Ticks  -Average
Count    : 1000
Average  : 364,56
Sum      : 
Maximum  : 
Minimum  : 
Property : Regex_Ticks

萨姆

$results  |  Measure-Object -Property IOPath_Ticks -Sum
Count    : 1000
Average  : 
Sum      : 129978
Maximum  : 
Minimum  : 
Property : IOPath_Ticks

$results  |  Measure-Object -Property Regex_Ticks -Sum
Count    : 1000
Average  : 
Sum      : 364560
Maximum  : 
Minimum  : 
Property : Regex_Ticks

因此,正如您所看到的,当您需要处理大量记录时,.NET类的使用最好与正则表达式相比

答案 1 :(得分:0)

尝试:

$val="subdomain1.google.nl"
$val.substring(0,$val.LastIndexOfAny("."))
$val="subdomain1.subdomain2.google.com"
$val.substring(0,$val.LastIndexOfAny("."))
$val="subdomain1.facebook.com"
$val.substring(0,$val.LastIndexOfAny("."))
$val="subdomain1.subdomain2.facebook.com"
$val.substring(0,$val.LastIndexOfAny("."))