如何在PowerShell中仅提取属性名并忽略属性值
在PowerShell中提取Properties文件的属性名
我来帮你搞定这个问题!针对properties文件里key=value的典型格式,在PowerShell里只提取属性名其实很简单,给你两种实用的方法,还能自动跳过注释和空行:
方法一:正则匹配法
这种方法用正则精准匹配属性名部分,适合大多数场景:
# 替换成你的properties文件路径 Select-String -Path "C:\path\to\your\file.properties" -Pattern "^([^=#]+)" | ForEach-Object { $_.Matches.Groups[1].Value.Trim() }
原理说明:
- 正则
^([^=#]+):匹配行开头到第一个=或#的内容,确保只拿到属性名 .Trim():去除属性名前后可能存在的空格- 自动跳过以
#开头的注释行,因为注释行的开头匹配不到这个正则
方法二:字符串拆分法
如果属性值里可能包含=字符,这种方法更稳妥,只按第一个=拆分:
# 替换成你的properties文件路径 Get-Content "C:\path\to\your\file.properties" | ForEach-Object { # 跳过空行和注释行 if ($_ -notmatch '^\s*$' -and $_ -notmatch '^\s*#') { # 只拆分一次,避免属性值里的=影响结果 $key = $_.Split('=', 2)[0].Trim() # 确保输出非空的属性名 if (-not [string]::IsNullOrEmpty($key)) { $key } } }
原理说明:
Get-Content读取文件的每一行内容- 过滤掉空行和以
#开头的注释行,避免无效输出 .Split('=', 2):只按第一个=拆分字符串,防止属性值里的=干扰结果- 最后通过
Trim()和空值检查,确保输出的都是干净有效的属性名
内容的提问来源于stack exchange,提问作者jks
相关产品推荐
相关产品推荐

