Linux脚本练习之script090-提取值
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本练习之script090-提取值相关的知识,希望对你有一定的参考价值。
script090
题目
注:本题来源于 SHELL33 业务分析-提取值 。
假设我们的日志 nowcoder.txt
里,内容如下
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.15
serverName:8.5.15.0
osName:Windows
osVersion:10
脚本一
使用 grep
匹配符合指定正则表达式的行,然后使用 sed
命令删除多余的字符串,则剩下的就是我们需要的结果。
#!/bin/bash
server_version=$(grep "Server version:" nowcoder.txt | sed 's/.*Server version://')
server_name=$(grep "Server number:" nowcoder.txt | sed 's/.*Server number://')
os_name=$(grep "OS Name:" nowcoder.txt | sed 's/.*OS Name://' | sed 's/,.*//')
os_version=$(grep "OS Version:" nowcoder.txt | sed 's/.*OS Version://')
echo "serverVersion:$server_version"
echo "serverName:$server_name"
echo "osName:$os_name"
echo "osVersion:$os_version"
脚本二
使用 awk
命令编程实现。
# 通过 冒号字符和逗号字符 进行分割
awk -F "[:,]" '
# 如果该行包含字符串 Server version,则提取第四个字段输出
if($0~"Server version")
print "serverVersion:" $4;
# 同理
if($0~"Server number")
print "serverName:" $4;
if($0~"OS Name")
print "osName:" $4;
if($0~"OS Version")
print "osVersion:" $6
' nowcoder.txt
以上是关于Linux脚本练习之script090-提取值的主要内容,如果未能解决你的问题,请参考以下文章
Linux脚本练习之script034-取出网卡 IP 地址。
Linux脚本练习之script005-从键盘读入 10 个数,显示最大值和最小值。
Linux脚本练习之script013-判断当前用户对指定参数文件,是否不可读并且不可写。
Linux脚本练习之script014-判断参数文件是否为 `.sh` 后缀的普通文件,如果是,则添加所有人可执行权限,否则提示非脚本文件。