Java 从shell读取jar的MANIFEST.MF

Java 从shell读取jar的MANIFEST.MF,java,bash,shell,manifest.mf,Java,Bash,Shell,Manifest.mf,我知道如何从jar中找到并解压缩MANIFEST.MF: 但是MANIFEST.MF有特殊的格式规则。读取“属性”比将其作为“标准”属性文件读取要困难,因为值可能有换行符 使用命令行从MANIFEST.MF读取给定属性(如实现URL)的健壮方法是什么 编辑:我添加了一个示例。虚线似乎以空格开头,但我还没有找到规范 Build-Jdk: 1.8.0_161 Implementation-URL: http://ik-rep2.continentale.loc:8081/nexus/conten

我知道如何从jar中找到并解压缩
MANIFEST.MF

但是
MANIFEST.MF
有特殊的格式规则。读取“属性”比将其作为“标准”属性文件读取要困难,因为值可能有换行符

使用命令行从
MANIFEST.MF
读取给定属性(如
实现URL
)的健壮方法是什么

编辑:我添加了一个示例。虚线似乎以空格开头,但我还没有找到规范

Build-Jdk: 1.8.0_161
Implementation-URL: http://ik-rep2.continentale.loc:8081/nexus/conten
 t/sites/site/de.something/release-plugin-ear/0.1.5-SN
 APSHOT/release-plugin-ear

使用Eugene的链接,您可以从正确格式化manifest.mf文件开始,然后将格式化的输出传输到
awk
,以提取所需属性的值:

perl -0777 -wpe 's/\n //g' MANIFEST.MF | awk '/PROPERTY/{print $2}'  

你查过了吗?@ernest_k这很有趣,但它说的是从Java读取,而不是从命令行读取。你能给出一个包含断行属性示例的示例输入吗?你能确认断行属性的新行总是以一个空格开头,如Eugene的链接所示吗?@JFMeier说:在UTF8编码形式下,任何一行的长度都不能超过72字节(不是字符)。如果某个值会使初始行长于此值,则应在额外的行上继续该值(每个行以单个空格开始)。