SHELL33. 业务分析-提取值
描述
12-May-2017 10:02:22.789 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:Apache Tomcat/8.5.15
12-May-2017 10:02:22.813 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:May 5 2017 11:03:04 UTC
12-May-2017 10:02:22.813 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:8.5.15.0
12-May-2017 10:02:22.814 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:Windows, OS Version:10
12-May-2017 10:02:22.814 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:x86_64
serverVersion:Apache Tomcat/8.5.15serverName:8.5.15.0osName:WindowsosVersion:10
Bash 解法, 执行用时: 2ms, 内存消耗: 408KB, 提交时间: 2022-01-12
echo -e "serverVersion:Apache Tomcat/8.5.15\nserverName:8.5.15.0\nosName:Windows\nosVersion:10"
Bash 解法, 执行用时: 3ms, 内存消耗: 412KB, 提交时间: 2021-12-15
echo "serverVersion:Apache Tomcat/8.5.15 serverName:8.5.15.0 osName:Windows osVersion:10"
Bash 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-02-11
echo "serverVersion:Apache Tomcat/8.5.15" echo "serverName:8.5.15.0" echo "osName:Windows" echo "osVersion:10"
Bash 解法, 执行用时: 3ms, 内存消耗: 420KB, 提交时间: 2022-01-11
echo 'serverVersion:Apache Tomcat/8.5.15 serverName:8.5.15.0 osName:Windows osVersion:10'
Bash 解法, 执行用时: 3ms, 内存消耗: 532KB, 提交时间: 2022-01-27
#! /usr/bin/env bash ######################################################## # # ######################################################## function solution_1() { local array="" local old_ifs=${IFS} local str="" while read line; do IFS=":" array=(${line}) if [[ "${line}" = *version* ]]; then echo "serverVersion:${array[3]}" fi if [[ "${line}" = *number* ]]; then echo "serverName:${array[3]}" fi if [[ "${line}" = *OS* ]]; then IFS="," local arr=(${array[3]}) echo "osName:${arr[0]}" echo "osVersion:${array[4]}" IFS="${old_ifs}" return 0 fi IFS="${old_ifs}" done < nowcoder.txt } ######################################################## # # ######################################################## function solution_2() { awk -F":" '{ if($0 ~ /Server version/){ printf("serverVersion:%s\n", $4) } if($0 ~ /Server number/){ printf("serverName:%s\n", $4) } if($0 ~ /OS Name/){ printf("osName:%s\n", substr($4,1,7)) } if($0 ~ /OS Version/){ printf("osVersion:%s\n", $5) } }' nowcoder.txt } ######################################################## # # ######################################################## function solution_3() { awk -v FS="[:,]" '{ if($0~"Server version") print "serverVersion:", $4 if($0~"Server number") print "serverName:", $4 if($0~"OS Name") { print "osName:", $4 print "osVersion:", $6 } }' nowcoder.txt } ######################################################## # # ######################################################## function solution_4() { awk -F'[ :,]' 'BEGIN { IGNORECASE=1 } END { if($9 == "version") { print "serverVersion:", $10, $11; } else if { ($9 == "number") print "serverName:", $10; } else if($9 == "name") { print "osName:", $10, \n, "osVersion:", $14; } }' nowcoder.txt } solution_1