如何从 Java 的 MANIFEST.MF 文件中读取 shell 中的多行条目?

问题描述 投票:0回答:1

我有一个 MANIFEST.MF,如下所示

Manifest-Version: 1.0
Created-By: Maven JAR Plugin 3.3.0
Build-Jdk-Spec: 17
Implementation-Title: cengine
Implementation-Version: 0.0.1-SNAPSHOT
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.spotnana.obt.commissionengine.CommissionEngineApplicati
 on
Spring-Boot-Version: 3.0.13
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx

我想从上面的 MANIFEST.MF 文件中读取

Start-Class
。我尝试了here提到的解决方案。

清单规格如下所示

以 UTF8 编码形式,任何行的长度不得超过 72 个字节(不是字符)。如果某个值会使初始行比此长,则应在额外的行上继续(每行以单个空格开头)。

尝试中

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

它看起来像

onm.spotnana.obt.commissionengine.CommissionEngineApplicati
bash shell manifest.mf
1个回答
0
投票

这似乎是 Windows 行结尾 (

\r\n
) 搞乱了模式匹配。

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

添加了

\r?
来满足 Linux Windows 两种情况。

© www.soinside.com 2019 - 2024. All rights reserved.