如何用C#分割adb输出并提取指定Hardware信息行
提取/proc/cpuinfo中指定Hardware行的C#实现方法
有两种实用方法可以实现需求,优先推荐第一种,效率更高:
方法一:通过adb命令直接过滤目标行
在adb命令里用grep直接过滤出包含Hardware : 的行,不用把整个/proc/cpuinfo内容传回本地,节省传输资源:
// 直接在设备端过滤目标行 string hardwareLine = ExecADB(string_, "-s " + array[0] + " shell cat /proc/cpuinfo | grep \"Hardware : \""); TracerWrite("Cpu Hardware: ", Color.White); TracerWriteLine(hardwareLine.Trim(), Color.SeaGreen);
方法二:本地字符串处理提取目标行
如果需要保留完整的/proc/cpuinfo内容做其他处理,可以先拿到全部内容,再用C#字符串操作提取目标行:
string fullCpuInfo = ExecADB(string_, "-s " + array[0] + " shell cat /proc/cpuinfo"); // 按换行符分割所有行,过滤空行 string[] cpuLines = fullCpuInfo.Split(new[] { "\n", Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); // 查找以"Hardware : "开头的行 string targetHardwareLine = cpuLines.FirstOrDefault(line => line.StartsWith("Hardware : ")); TracerWrite("Cpu Hardware: ", Color.White); if (!string.IsNullOrEmpty(targetHardwareLine)) { TracerWriteLine(targetHardwareLine.Trim(), Color.SeaGreen); } else { // 处理找不到目标行的情况 TracerWriteLine("未找到Hardware信息", Color.Red); }
注意:如果设备shell不支持
grep,可以替换为findstr,不过安卓系统默认自带grep,一般无需替换。
内容的提问来源于stack exchange,提问作者R3M0T3smith
相关产品推荐
相关产品推荐

