POWERSHELL:像awk一样拆分字符串

问题描述 投票:0回答:3

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

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

我只想扩展文件(这里是ico)。某些扩展名可能超过3个字符。有了awk,我可以做,但是在powershell ...感谢您的帮助。

string powershell
3个回答
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个字符。


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
投票
$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"
© www.soinside.com 2019 - 2024. All rights reserved.