我有以下格式的字符串。我想从此字符串中提取特定值,并将其放入下面的变量中。我更喜欢使用尴尬。最简单的方法是什么。

问题描述 投票:0回答:1
12.23.34.45 /usr/bin/java -javaagent:/home/appuser/jars/somethig.jar -Dotel.resource.attributes=application=Spring_boot_DC -Dotel.service.name=some-service-name -Dotel.metrics.exporter=none -Dotel.exporter.otlp.endpoint=http://123.123.123.123:4317 -Xms256m -Xmx512m -Dserver.port=5519 -jar -Dspring.profiles.active=prod SNAPSHOT.jar


提取 / dserver.port/之间的文本,并以space结尾。

我将使用gnu

AWK
用于以下方式进行此任务。令
file.txt
shell unix awk scripting
1个回答
0
投票
12.23.34.45 /usr/bin/java -javaagent:/home/appuser/jars/somethig.jar -Dotel.resource.attributes=application=Spring_boot_DC -Dotel.service.name=some-service-name -Dotel.metrics.exporter=none -Dotel.exporter.otlp.endpoint=http://123.123.123.123:4317 -Xms256m -Xmx512m -Dserver.port=5519 -jar -Dspring.profiles.active=prod SNAPSHOT.jar

awk 'match($0,/-Dserver.port([^ ]*)/,arr){print arr[1]}' file.txt

Gives输出
=5519

解释:
match

字符串函数可以以3种参数形式使用,以提取所需的子字符串,并通过捕获包含在括号中的组表示。请注意,我将

match
用作模式,因此,如果无法找到提供的正则表达式,则不会采取任何措施。

(在GNU AWK 5.3.1中测试)

也就是说,您的数据看起来像选项字符串,因此我建议您考虑使用它的选项。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.