POWERSHELL:像awk一样拆分字符串

时间:2018-09-12 15:11:45

标签: string powershell

在文件中,我有很多这样的行

Nom de l'objet :    C:\ProgramData\Microsoft\Device Stage\Task\{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}\netfol.ico

我只想要文件扩展名(此处为ico)。某些扩展名可能包含3个以上的字符。 使用awk,我可以做,但是在powershell中... 感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

而不是使用RegEx,为什么不使用[System.IO.Path]类来获取扩展名:

$str = "Nom de l'objet :    C:\ProgramData\Microsoft\Device Stage\Task\{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}\netfol.ico"
$filename=($str -split ':',2)[1]
[System.IO.Path]::GetExtension($filename)

答案 1 :(得分:2)

使用一些正则表达式:

$str = "Nom de l'objet :    C:\ProgramData\Microsoft\Device Stage\Task\{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}\netfol.ico"
$str -match "\.(.{3,})$"
$extension = $Matches[1]
$extension #ico

\.(.{3,})$匹配行末尾最后一个点之后的至少3个字符。

答案 2 :(得分:1)

$str = "Nom de l'objet :    C:\ProgramData\Microsoft\Device Stage\Task\{07deb856-fc6e-4fb9-8add-d8f2cf8722c9}\netfol.ico"
if ( $str.LastIndexOf(".") -gt -1 ) {
    $str.Substring($str.LastIndexOf(".") + 1)
}
# Outputs "ico"