如何从unzip -l的输出中获取特定路径

时间:2018-05-26 12:39:33

标签: regex bash grep unzip

我需要在.app文件夹后面提取Info.plist文件的路径。

$ unzip -l test.ipa | grep Info.plist
258  05-25-2018 11:52   Payload/test.app/CDVLaunchScreen.storyboardc/Info.plist
2197  05-25-2018 11:52   Payload/test.app/Info.plist

问题是.app文件夹在每个.ipa文件中的名称都不同。我不能为Payload/test.app/Info.plist而哭泣。我试过了:

$ unzip -l test.ipa | grep Payload/*.app/Info.plist
$ unzip -l test.ipa | grep "Payload/..app/Info.plist"

什么都不产生。

正确的grep参数如何?另外,我如何才提取路径(Payload/test.app/Info.plist)而不是整行(2197 05-25-2018 11:52 Payload/test.app/Info.plist)?

3 个答案:

答案 0 :(得分:1)

sudo npm install -g pouchdb-server --ignore-scripts

你需要的正则表达式是pouchdb-server -o aws-private-ip --dir /home/ubuntu/db 。请注意转义的点 - 它们必须按字面意思匹配。

除非你将grep参数括在引号中,否则

/usr/lib/node_modules/pouchdb-server/node_modules/bindings/bindings.js:96 throw err ^ Error: Could not locate the bindings file. Tried: → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/build/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/build/Debug/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/build/Release/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/out/Debug/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/Debug/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/out/Release/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/Release/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/build/default/leveldown.node → /usr/lib/node_modules/pouchdb-server/node_modules/leveldown/compiled/8.11.2/linux/x64/leveldown.node at bindings (/usr/lib/node_modules/pouchdb-server/node_modules/bindings/bindings.js:93:9) at Object.<anonymous> (/usr/lib/node_modules/pouchdb-server/node_modules/leveldown/leveldown.js:4:46) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Module.require (module.js:596:17) at require (internal/module.js:11:18) at Object.<anonymous> (/usr/lib/node_modules/pouchdb-server/node_modules/level/level.js:1:106) 将被shell解释(在你的情况下,双引号也没问题,因为在这个特定的表达式中不会发生变量扩展冲突)。

最后,unzip -l test.ipa | grep -o 'Payload/.*\.app/Info\.plist' 开关只告诉grep输出匹配。

答案 1 :(得分:1)

模式.表示任何字符,*表示前面字符的0或更多倍。

你的命令应该是:

unzip -l test.ipa | grep -o 'Payload/.*\.app/Info\.plist'

答案 2 :(得分:1)

如果您不确定所有路径是否都以const result = [...pairs(shuffle([1,2,3,4]))]; 开头,请尝试

Payload

匹配unzip -l test.ipa | grep -P '(?<=\s)\S*Info.plist'之前的所有非空白字符。