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
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中测试)
也就是说,您的数据看起来像选项字符串,因此我建议您考虑使用它的选项。