如何从 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
问题是 .app 文件夹在每个 .ipa 文件中的名称不同。我无法 grep 查找 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
.
之前的所有非空白字符
我需要在 .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 文件中的名称不同。我无法 grep 查找 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
.