如何一次性获取并解析Android设备getprop指定属性值
一次性解析ADB getprop输出获取指定属性值(无括号格式)
方案1:grep + sed组合(简洁直观)
使用grep过滤目标属性行,再通过sed移除括号、冒号和多余空格,最终得到与单独执行命令一致的纯值输出:
adb shell getprop | grep -E "(ro.product.display_name|ro.bootloader|ro.serialno|ro.product.model)" | sed -e 's/\[//g' -e 's/\]//g' -e 's/://g' -e 's/^ *//' -e 's/ *$//'
命令解析:
grep -E:用扩展正则表达式匹配多个目标属性,避免多次调用grepsed -e 's/\[//g':移除所有左括号[sed -e 's/\]//g':移除所有右括号]sed -e 's/://g':移除冒号:sed -e 's/^ *//':移除行首所有空格sed -e 's/ *$//':移除行尾所有空格
方案2:awk直接提取值(更精准)
如果只想保留属性值(和单独执行adb shell getprop <属性名>的输出完全一致),可以用awk直接定位并提取值部分:
adb shell getprop | awk '/ro.product.display_name|ro.bootloader|ro.serialno|ro.product.model/ {sub(/^\[.*\]: \[/, ""); sub(/\]$/, ""); print}'
命令解析:
/匹配规则/:筛选包含目标属性的行sub(/^\[.*\]: \[/, ""):删除行首的[属性名]: [部分sub(/\]$/, ""):删除行尾的]print:输出清理后的纯属性值
方案3:输出属性名=值格式(便于后续处理)
如果需要同时保留属性名和值的对应关系,方便脚本解析,可以用以下命令:
adb shell getprop | awk '/ro.product.display_name|ro.bootloader|ro.serialno|ro.product.model/ {gsub(/\[|\]/, ""); split($0, arr, ":"); print arr[1] "=" arr[2]}' | sed 's/ //g'
示例输出:
ro.product.display_name=Pixel7 ro.bootloader=BLU1.0 ro.serialno=ABC123456789 ro.product.model=Pixel7
内容的提问来源于stack exchange,提问作者Sasha Milic
相关产品推荐
相关产品推荐

