[英]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.