Powershell使用特殊字符修剪文本

时间:2017-06-01 04:14:00

标签: powershell

我有一个主机名列表,其中包含FQDN中的域和子域名。我需要从中获取父(root)域名。

我尝试使用子字符串,但没有成功。

abc.xyz.me.com
def.me.com
ghi.sub.new.com
jkl.sup.old.com

这些是一些示例,从列表中我想获得根域(我,新旧)。

3 个答案:

答案 0 :(得分:1)

简单的方法是使用split并获得-2

的索引
from datetime import datetime
from datetime import timedelta
import pymysql
conn = pymysql.connect()#I simplified the connecting details

print("date:  {}".format(db.fetchone()[0]))
print("the type of the date: {}".format(type(db.fetchone()[0])))
print("one row : {}".format(db.fetchone()))
print("one row of the type: {}".format(type(db.fetchone())))
print("the recent time: {}".format(datetime.now()))
print("the recent time of the type: {}".format(type(datetime.now())))

你可能想要做的不仅仅是写信给主持人,但这应该会给你一个想法。

答案 1 :(得分:1)

拆分字符串,反转数组,然后拉出第二个成员

$list = @(
  "abc.xyz.me.com",
  "def.me.com",
  "ghi.sub.new.com",
  "jkl.sup.old.com"
)

$List | ForEach-Object {
    [Array]::Reverse(($Arr = $_.Split(".")))
    $TLD, $SLD, $Null = $Arr

    $TLD # You're top level domain
    $SLD # The second level domain
    # The rest of the values after those two get sent to null land
}

答案 2 :(得分:1)

这是一个解决方案,它将完整父域的唯一列表放入名为$ParentDomains的变量中:

$Domains = 'abc.xyz.me.com', 'def.me.com', 'ghi.sub.new.com', 'jkl.sup.old.com'

$ParentDomains = $Domains | ForEach-Object {
    $Domain = $_.Split('.')
    $Domain[-2]+'.'+$Domain[-1]
} | Get-Unique

$ParentDomains

<强>解释

  • 通过ForEach-Object遍历域名列表。循环中的每个域都由$_表示。
  • 拆分'。'上的字符串。字符
  • 使用索引指示符[]获取每个数组中倒数第二个[-2]和最后[-1]项,并将它们输出为以“。”分隔的新字符串。
  • 将结果导入Get-Unique以删除重复项。