输出应用程序包名时前面还有一行这种问题
时间: 2024-03-01 08:50:37 浏览: 32
如果你发现在执行命令时输出了多余的内容,可以使用 `awk` 命令来过滤掉。具体的命令如下:
```
dumpsys window windows | awk '/mCurrentFocus/ {print $NF}' | cut -d/ -f1 | sed 's/[{}]//g'
```
这个命令会先使用 `awk` 命令过滤出包含 `mCurrentFocus` 的行,并输出该行的最后一个字段,即应用程序包名和窗口名称。然后使用 `cut` 命令去除掉多余的部分,最后使用 `sed` 命令去除掉花括号。输出结果只包含当前屏幕上的应用程序包名,类似于:
```
com.rxgb.launcher.activity.MainActivity
```
使用 Python 也可以实现类似的功能,示例代码如下:
```python
import re
import subprocess
output = subprocess.check_output("dumpsys window windows", shell=True).decode()
package_name = re.search(r"mCurrentFocus=Window{.+? ([\w.]+)/", output).group(1)
package_name = package_name.replace("{", "").replace("}", "")
print("Package Name:", package_name)
```
这个代码会执行 `dumpsys window windows` 命令,并使用正则表达式来匹配应用程序包名,然后使用字符串的 `replace()` 方法来替换花括号为空字符串,从而去除了括号。输出结果只包含当前屏幕上的应用程序包名,类似于:
```
Package Name: com.rxgb.launcher.activity.MainActivity
```
这个代码中使用了 `subprocess` 模块来执行命令,并使用正则表达式来匹配应用程序包名。如果你希望输出窗口名称,可以修改正则表达式来匹配窗口名称。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)