gpt4 book ai didi

android - 简洁的多行子串提取

转载 作者:行者123 更新时间:2023-11-30 00:27:01 26 4
gpt4 key购买 nike

好吧,我知道一些 shell 魔法,但我的头脑在一天中的这个时候无法解析所需的 sed 复杂性,所以我尝试了 perl。现在哈哈,多变的空间爆炸……但我还是以某种方式绕过了它,只花了我一个小时。 S0Oo。滥用我的 REPL shell 尝试从 android 安装包列表中提取名称和版本..

dumpsys package packages > dump
( set -xv; while perl -ne "$(rlwrap cat)" < dump; do eval printf "=%.s" {1..$(tput cols)}; echo; done; )

我认为这是可行的:

 dumpsys package packages|perl -ne 'if (/Package \[(.*)\]/g) {print "$1 -- "}; if (/versionName=(.*)/g) {print "$1\n"}'|sort

如何缩短这个时间? dumpsys 输出如下所示:

  Package [org.fdroid.fdroid.privileged] (64fb46e0):
userId=10022 gids=[]
pkg=Package{6501d0a8 org.fdroid.fdroid.privileged}
codePath=/system/priv-app/FDroidPrivileged.apk
resourcePath=/system/priv-app/FDroidPrivileged.apk
nativeLibraryPath=/data/app-lib/FDroidPrivileged
versionCode=1050 targetSdk=22
versionName=0.1
applicationInfo=ApplicationInfo{64f94838 org.fdroid.fdroid.privileged}
flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ]
dataDir=null
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
timeStamp=2016-02-25 08:36:51
firstInstallTime=2016-02-25 08:36:51
lastUpdateTime=2016-02-25 08:36:51
signatures=PackageSignatures{64fb4818 []}
permissionsFixed=false haveGids=false installStatus=1
pkgFlags=[ SYSTEM PRIVILEGED ]
User 0: installed=true blocked=false stopped=false notLaunched=false enabled=0
grantedPermissions:
android.permission.INSTALL_PACKAGES
android.permission.DELETE_PACKAGES
Package [ds.cpuoverlay] (64f98b70):
userId=10048 gids=[3003, 1028, 1015, 1023]
pkg=Package{64fd32a8 ds.cpuoverlay}
codePath=/data/app/ds.cpuoverlay-1.apk
resourcePath=/data/app/ds.cpuoverlay-1.apk
nativeLibraryPath=/data/app-lib/ds.cpuoverlay-1
versionCode=83 targetSdk=22
versionName=5.7.0
applicationInfo=ApplicationInfo{6514bcb0 ds.cpuoverlay}
flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
dataDir=/data/data/ds.cpuoverlay
supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
timeStamp=2017-06-21 10:19:53
firstInstallTime=2017-02-05 17:28:29
lastUpdateTime=2017-06-21 10:19:55
signatures=PackageSignatures{64f98c38 [64f999e8]}
permissionsFixed=true haveGids=true installStatus=1
pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]
User 0: installed=true blocked=false stopped=false notLaunched=false enabled=0
....

最佳答案

长短语确实需要两个匹配项,但可以稍微简化(和缩短)

dumpsys package packages | perl -nE'
/^\s*Package \[(.*)\]/ && print "$1 -- "; /^\s*versionName=(.*)/ && say $1
' | sort

有输出

ds.cpuoverlay -- 5.7.0org.fdroid.fdroid.privileged -- 0.1

我在一个文本文件中测试了你发布的输入,我将其输入 perl -nE '...' input.txt |排序

关于android - 简洁的多行子串提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45158296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com