在shell的行尾找到子字符串

时间:2015-07-23 21:45:40

标签: android regex bash shell grep

我是shell脚本新手。

当我写作 adb shell ps | grep "org.mozilla.fennec"
我得到了

u0_a52    908   57    557664 144820 ffffffff b6f755cc S org.mozilla.fennec

u0_a52    1083  57    243108 23824 ffffffff b6f755cc S org.mozilla.fennec.UpdateService

问题是我只需要第一行。所以我尝试adb shell ps | grep "org.mozilla.fennec$",但令人惊讶的是它没有显示任何内容。

我还需要第一行的第二个字段。我怎么能用grep做到这一点? 任何帮助将不胜感激。感谢。

3 个答案:

答案 0 :(得分:0)

删除第二行:

adb shell ps | grep "org.mozilla.fennec"|grep -v "UpdateService"

要打印第二个字段:

adb shell ps | grep "org.mozilla.fennec"|grep -v "UpdateService"| awk '{print $2}'

答案 1 :(得分:0)

要打印第二个字段,您可以使用awk

adb shell ps | awk -v RS='\r' '$NF == "org.mozilla.fennec"{print $2}'

打印整行:

adb shell ps | awk -v RS='\r' '$NF == "org.mozilla.fennec"'

答案 2 :(得分:0)

以下命令将在" adb shell ps"的命令输出中首次出现org.mozilla.fennec。并将停止照顾。

adb shell ps |  awk '{if($0~/org.mozilla.fennec/){print $2; exit 0}}'

当你需要第一次模式匹配时,它更好,不需要在第一次匹配后扫描整个输出。