繁体   English   中英

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

[英]How to grep a specific path from output of unzip -l

我需要在.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

问题是每个.ipa文件中.app文件夹的名称都不同。 我无法访问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 )?

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

你需要的正则表达式是Payload/.*\\.app/Info\\.plist 注意逃脱的点 - 它们必须按字面意思匹配。

.*将由shell解释,除非您将grep参数括在引号中(在您的情况下双引号也可以,因为在此特定表达式中不会发生变量扩展冲突)。

最后, -o开关告诉grep输出只匹配。

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

你的命令应该是:

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

如果您不确定所有路径是否以Payload开头,请尝试

unzip -l test.ipa | grep -P '(?<=\\s)\\S*Info.plist'

它匹配Info.plist之前的所有非空白字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM