【问题标题】:Searching for a matching map name in Powershell在 Powershell 中搜索匹配的地图名称
【发布时间】:2021-12-22 17:14:20
【问题描述】:

对不起,我真的不知道如何正确地问这个问题。 我想在 Powershell 中解析 CS:GO Demo 文件,我想从中检索地图名称。

我像这样打开 dem 文件: 获取内容 $demo |选择 - 前 1 |选择字符串-模式'de_'

我得到这个作为回应:


HL2DEMO    đ5  MatchServer I.                                                                                                                                                                
                                                                        GOTV Demo                                                                                                                           
                                                                                                                                de_mirage                                                                   
                                                                                                                                                                                        csgo                
                                                                                                                                                                                                            
                                     @#A  g   uÔ ~ř˙˙                                                                                                                                                   
            ą     Vđk (8wEÄü€ŢMĐhZăU    X@`śh u   <zcsgo‚   de_mirageŠ ’sky_dustšGOTV¨ ° ¸      ( 0 ž


我只想将 de_mirage 作为变量。因此,如果地图发生变化,那么它将是 de_dust2 或 de_inferno 等等。有人知道这个的解决方案吗?

谢谢!

【问题讨论】:

    标签: regex powershell search demo


    【解决方案1】:

    使用Get-Content 时,每行一次一个沿管道传递,除非指定-Raw 开关。我提出这个问题的原因是由于您正在使用您的Select cmdlet。当你指定-First的参数,值为1时,你只是抓取第一行,然后试图在第一行找到模式。

    这是我对 RegEx 的糟糕尝试:

    Get-Content -Path $demo | Where-Object -FilterScript { $_ -match 'de_\w+' }
    $Matches[0]
    

    。 . .其中$Matches Automatic Variable 包含所有匹配的RegEx 模式(顾名思义)以数组格式存储;我们使用索引号来引用该值。就像您所做的那样,在搜索 Pattern 时,这也可以通过管道传递到 Select-String

    【讨论】:

    • 由此解决:$getMap = Get-Content $demo |选择 - 前 1 |选择字符串-模式'de_' | Where-Object -FilterScript { $_ -match 'de_\w+' } $playedOnMap = $matches[0] echo $playedOnMap 非常感谢!
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2020-12-02
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    相关资源
    最近更新 更多