Linux shell 脚本(三)
转载请标明出处:
http://blog.csdn.net/zwto1/article/details/45111547;
本文出自:【zhang_way的博客专栏】
九、使用case 分支
语法格式:
case 变量值 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
*)
默认命令序列
esac
例子:
case 控制参数 in
start)
启动XX服务
;; #两个分号不能省略
stop)
停止XX服务
;;
*)
显示服务脚本的用法
esac
基本用法示例:
1.识别用户击键类型
#!/bin/bash
read -p "请输入一个字符,并按Enter 键确认:" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "你输入的是字母."
;;
[0-9])
echo "你输入的是数字"
;;
*)
echo "你输入的是空格、功能键或其他字符."
esac
结果如下图:
2.目标:
2.1 编写服务脚本sleepd
能够响应start、stop控制参数
将服务交给chkconfig进行管理
如图:
2.2 chkconfig处理
在脚本开头设置chkconfig参数
添加为系统服务
在2.1上我们要添加 chkconfig参数配置
#!/bin/bash #<strong>chkconfig: - 90 10</strong>
#告诉chkconfig 我们这个脚本适用于那几个级别,切换到这个运行级别的进程启动顺序是90 ,停止这个进程顺序是 #10
#description:Daemon script for sleepd Server
......
chkconfig --add sleepd #添加为系统服务 chkconfig sleepd on # 开机自启动
十、awk 文本处理工具
shell 输出为"文本"
面向过程,而非面向对象
命令是文本、输出也是文本
查看内存信息:head -15 /pro/meminfo
非交互处理方式:
重定向、管道、命令替换
head 、more、cut、tr
grep、awk 、sed
awk编程语言:
数据处理引擎
基于模式匹配检查输入
将期望的结果print到屏幕
awk基本命令格式:
语法格式:awk '模式{操作}' 文件1 文件2 ......
awk 'NR==1 {print}' /etc/hosts #awk内建变量 将/etc/hosts第一行的文本输出
常用的内建变量
NR 当前处理行的序数(行号)
FS 字段分隔,缺省为空格或tab位
$n 当前行的第N个字段
$0 当前行的所有文本段
用法示例:
准备测试文件:
cat file.txt 1 This is the first line 2 Hello ,Everybody 3 192.168.4.2 w2k8.benet.com 4 hunter:x:504:504::/home/hunter:/bin/bash
1.按行号输出文本
如下图:
2.使用比较运算
awk '(NR%2)==1{print}' file.txt #输出所有的奇数行
1 This is the first line
3 192.168.4.2 w2k8.benet.com
awk '(NR%2)==0{print}' fiie.txt # 输出所有偶数行
2 Hello ,Everybody
4 hunter:x:504:504::/home/hunter:/bin/bash
3.使用正则表达式:
awk '/2/{print}' file.txt #输出包含数字2的行
2 Hello ,Everybody
3 192.168.4.2 w2k8.benet.com
awk '/bash $/{print}' file.txt #输出以bash结尾的行
4 hunter:x:504:504::/home/hunter:/bin/bash
4.指定分隔、指定输出字段
awk 'NR==2,NR==3{print $1,$3}' file.txt #输出第2-3行的第1、3字段
2 Hello
3 192.168.4.2
awk -F. '$5=="benet"{print $0}' file.txt #-F指定分隔符 输出以.分隔且第5字段为benet的整行
3 192.168.4.2w2k8.benet.com
十一、sed文本处理工具
sed 基本用法:
输出文本
删除及替换文本
sed流式编辑器/文本过滤
Stream Editor
基于模式匹配过滤/修改文本
语法格式:
sed '编辑指令' 文件1 文件2 ......
sed -n '编辑指令' 文件1 文件2 ...... #只把编辑指令影响的部分输出
sed -i '编辑指令' 文件1 文件2 ...... # 直接修改文本内容 awk 不可以直接修改
sed -n '3,5p' /etc/hosts #处理3到5行 p 代表print
编辑指令的写法:
格式:[地址1[,地址2]]操作类型
多条指令之间以分号隔开
sed -n '3p;5p' /etc/hosts #输出第3行,输出第5行
最常用的操作类型:
p 输出/打印文本行
n 取下一行文本(跳过当前行)
d 删除
s 字符串替换
a 追加新的文本
例子:
准备测试文件:
cat file.txt 1 This is the first line 2 Hello ,Everybody 3 192.168.4.2 w2k8.benet.com 4 hunter:x:504:504::/home/hunter:/bin/bash
1. 隔行输出文本内容:
sed -n 'p;n' file.txt #输出所有奇数行 1 This is the first line 3 192.168.4.2 w2k8.benet.com sed -n 'n;p' file.txt #输出所有偶数行 2 Hello ,Everybody 4 hunter:x:504:504::/home/hunter:/bin/bash
2. 使用正则表达式:
sed -n '/w2k8/,$p' file.txt #输出从第1个包含w2k8的行到最后一行 3 192.168.4.2 w2k8.benet.com 4 hunter:x:504:504::/home/hunter:/bin/bash sed -n '/\<This>\/p' file.txt #输出包含单词This的行 1 This is the first line
3.删除符合条件的行
sed '2,3d' file.txt #删除第2-3行文本 1 This is the first line 4 hunter:x:504:504::/home/hunter:/bin/bash sed '/w32k8/d;$d' file.txt #删除包含w2k8的行和最后一行 1 This is the first line 2 Hello ,Everybody
4.删除不符合条件的行
sed '/ne/!d' file.txt #删除不包含字符串ne的行 1 This is the first line 3 192.168.4.2 w2k8.benet.com
5.替换符合条的文本
sed '3,4s/hunter/BADBOY/g' file.txt #将第3行到第4行的所有hunter替换为BADBOY 1 This is the first line 2 Hello ,Everybody 3 192.168.4.2 w2k8.benet.com 4 BADBOY:x:504:504::/home/BADBOY/bin/bash
6.替换的特殊效果
sed '1,2s/^/#/g' file.txt # 在第1-2行的行首插入# 进行注释 ^: 行首 $:行尾 真的在源文件插入# ,要加-i #1 This is the first line #2 Hello ,Everybody 3 192.168.4.2 w2k8.benet.com 4 hunter:x:504:504::/home/hunter:/bin/bash sed 's/ter//g' file.txt #删除字符串ter(替换为空串) 1 This is the first line 2 Hello ,Everybody 3 192.168.4.2 w2k8.benet.com 4 hun:x:504:504::/home/hun:/bin/bash
Linux shell 脚本(三)的更多相关文章
- 老李分享:《Linux Shell脚本攻略》 要点(三)
老李分享:<Linux Shell脚本攻略> 要点(三) 1.生产任意大小的文件 [root@localhost dd_test]#[root@localhost dd_test]# ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- Linux Shell脚本攻略
-Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...
- 老李分享:《Linux Shell脚本攻略》 要点(七)
老李分享:<Linux Shell脚本攻略> 要点(七) 1.显示给定文件夹下的文件的磁盘适用情况 [root@localhost program_test]# du -a -h ./ ...
- 读《Linux Shell脚本攻略》(第2版) 总结
前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...
- 【学习】Linux Shell脚本编程
1.脚本的组成和执行 Linux shell脚本的结构并不复杂,其主要由变量.内部命令以及shell的语法结构和一些函数.其他命令行的程序等组成,以下是一个简单的shell脚本. #!/bin/bas ...
- linux ——shell 脚本
linux—shell 脚本 精简基础 2018/10/30 13 ...
随机推荐
- springMvc学习笔记一
什么是springmvc springmvc就是spring框架的一个模块 所以springmvc与spring之间无需通过中间整合层进行整合的. springmvc又是基于mvc的web框架 mv ...
- Hibernate学习(一)创建数据表
(1)生成数据库表的创建: // 默认读取hibernate.cfg.xml文件 Configuration cfg = new Configuration().configure(); // 生成并 ...
- hihoCoder 1493 : 歌德巴赫猜想 素数筛法
题意:哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和".给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗?如果有多组解,输出P最小的一 ...
- NewLife.XCode 上手指南2018版(一)代码生成
目录 NewLife.XCode 上手指南2018版(一)代码生成 NewLife.XCode 上手指南2018版(二)增 NewLife.XCode 上手指南2018版(三)查 NewLife.XC ...
- Innotop简单介绍
Innotop介绍 Innotop是一款Perl脚本编写.开源.功能强大的MySQ的监控工具,它通过文本模式(命令行模式)监控,功能强大,配置简单,易于使用等等特性.Innotop这个项目位于ht ...
- 关于我上传的activiti自定义流程demo的说明
最近又收到了一些询问activiti的问题,其中好几个都是向我索要我上传的这个activiti自定义流程demo的数据库设计. 索要的多了,而我早就把这个库给删掉了,所以我便觉得有必要做一个说明: 我 ...
- 各大HotFix热补丁方案分析和比较
最近开源界涌现了很多热补丁项目,但从方案上来说,主要包括Dexposed.AndFix.ClassLoader(来源是原QZone,现淘宝的工程师陈钟,在15年年初就已经开始实现)三种.前两个都是阿里 ...
- 如何使用DirectDraw直接显示RGB、YUV视频数据(播放yuv)
#include "draw.h"void CTest100Dlg::OnButton1() { // TODO: Add your control notification ha ...
- AlarmManager(全局定时器/闹钟)详解
AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.指定时长或以周期形式执行某项操作.通过对它的使用,个人觉得叫全局定时器比较合适,其实它的作用和Timer有点相似.都有两种相似的 ...
- C#之AES256位加密解密
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分 ...