【问题标题】:Filter a value when using regex and grep [duplicate]使用正则表达式和 grep 时过滤值 [重复]
【发布时间】:2018-10-01 01:48:40
【问题描述】:

我正在读取名为 mobile_cep 的 Android 应用程序的内存使用情况,如下所示

adb shell dumpsys meminfo | grep mobile_cep

但是这个命令输出为

amar@admin:~/Desktop/bash-andy$ adb shell dumpsys meminfo | grep mobile_cep
234,467K: org.carleton.iot.mobile_cep (pid 27060 / activities)
234,467K: org.carleton.iot.mobile_cep (pid 27060 / activities)

表示输出显示两次。我的目标是多次查找234,467K 值,以便找到内存使用的平均值。

使用以下脚本

#!/bin/bash
counter=1
while [ $counter -le 10 ]
    do
        ((counter++))
        val1=$(adb shell dumpsys meminfo | grep mobile_cep | sed 's/:.*//')
        echo $val1
    done
echo  done

结果为

234,675K 234,675K
234,678K 234,678K
234,679K 234,679K
234,678K 234,678K
234,679K 234,679K
234,682K 234,682K

但我只想要第一个值。


如何做到这一点?

【问题讨论】:

  • 你为什么接受你的第一个问题,当时它还没有解决问题。您应该等待并做出回应,直到它解决您的问题
  • K 代表什么?是乘以 10241000 的值,您想要转换它还是只想要 K 中的平均值?
  • 我会看到man cut

标签: android regex bash shell grep


【解决方案1】:

使用以下代码解决了问题

 #!/bin/bash
counter=1
while [ $counter -le 10 ]
    do
        ((counter++))
        data=$(adb shell dumpsys meminfo | grep mobile_cep | sed 's/:.*//')
        List=$(echo $data | tr " " "\n")
        current=($List)
        tuple=${current[0]}
        currentMemory=$(sed 's|[K,]||g' <<< $tuple)
        echo $currentMemory
    done
echo  done
    echo  done

输出为

234675 
234678 
234679 
234678 
234679
234682

【讨论】:

  • 这是我的第一个 bash 脚本,你期待什么。你能提供一个有效的解决方案吗?
  • 不,它与您的答案中的问题相同。是的,你可以在这个论坛上得到一个有效的解决方案,但到目前为止,我至少不知道你想要做什么 - 你的问题是什么(一个循环调用相同的命令,一个接一个地调用 10 次)只是据我所知,adb 的输出在 greps 之前是什么,234,467K 如何影响它,也不知道预期的输出是什么或为什么。回到你原来的问题并解决它,或者写一个全新的、完整的问题来解释为什么原来的问答不够充分。
  • 是的,循环调用相同的命令,直到应用程序运行,因为我想找到实验运行时的平均内存消耗。234 mb 是指定应用程序使用的瞬时内存。
  • 如果您有这种感觉,我很抱歉,但这不是为了伤害您的感受。我非常尊重所有在这个平台上互相帮助的人。是的,我对 bash 脚本并不熟悉,它对我来说是一个新领域。
  • 没问题,如果您需要帮助,请阅读我在评论中所说的内容,如果不清楚,请参阅How to Ask
猜你喜欢
  • 1970-01-01
  • 2016-03-01
  • 2014-09-10
  • 2016-10-23
  • 2015-04-16
  • 1970-01-01
  • 2017-03-29
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多