shell脚本

shell脚本的作用

shell 脚本的作用

帮助运维完成一些重复性、复杂性的操作 解释命令到内核 结合配置服务使用,减少工作量
CMDB资产管理系统

1.shell脚本的命名的标准规则
文件名 .sh(文件名随便起,以.sh结尾)
python .py
php .php
java .java

vim dgf.sh
#!/bin/bash 			#这个是解释器
``
vim alex.py
#!/usr/bin/env python	#python解释器
如何编写shell脚本?
1 vim  dgf.sh
#!/bin/bash
linux命令
运行方式
如果shell脚本有执行权限
./ 文件名.sh
shell脚本的绝对路经
如果shell脚本没有执行权限
bsah 文件名.sh
sh 文件名.sh
source 文件名.sh
符号的用处
```bash
> 重定向输入
>> 重定向追加
”“”或‘’‘控制多行输入
&& 同义and, 逻辑与,等同于’和‘
|| 管道符。逻辑或,同义or,顺序执行,成功一个,后面的都不执行

执行脚本后查看日志输出

例子:bash dgf.sh > /opt/dgf.log
bash dgf.sh 1> /opt/dgf.log
> /opt/dgf.sh 清空内容
>  和 1> 正确标准输出
>  错误的日志输出
例子: bash dgf.sh 2> /opt/dgf.log
2> 查看错误日志
&> 混合日志输入
###  shell脚本-正则、grep、sed、awk三剑客
1.概述:正则表达式--简写:regex、regexp或RE,就是为处理大量的字符串而定义的一台规则和方法。例:假设“@”代表oldboy,”!” 代表eitboy。则echo “@!=”oldboy eitboy”。通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。
支持正则表达式的程序:
  Linux正则表达式:grep、awk、sed (egrep,awk 支持扩展正则表达式)
  PHP、JAVA、Perl、Python(Perl兼容PCRE)
学习目的(作用):可以帮助运维,从过多的文件内容当中,获取你想要的任何数据
3.基础正则表达式:(常见正则表达式例子)
	^word   搜索以word开头的。vi/vim中 ^ 一行的开头。
	word$   搜索以word结尾的。vi/vim中 $ 一行的结尾。
	^$      表示空行
	.        代表且只能代表任意一个单个字符
    \       例:\. 只代表点本身,转义符号,让有特殊身份意义的字符,脱掉马甲,还原;
            \n  换行符
            \r  匹配回车
            \w  匹配任意一个字符和数字
	*       重复0次或多次前面的一个字符。
    .*      匹配所有字符。例:^.* 以任意多个字符开头,.*$以任意多个字符结尾。
	[abc]    匹配字符集内的任意一个字符。
	[^abc]   不要abc这三个字符排列组合成的任意一个字符串。中括号里的 ^ 为取反。
    [1-9]     只要包含1-9之内的数字,就打印该行
    a\{n,m\}  重复n到m次前一个重复的字符。若用egrep、sed -r可以去掉斜线。
	\{n,\}    重复至少n 次前一个重复的字符。若用egrep、sed -r可以去掉斜线。
	\{n\}     只打印前边出现n次的字符。若用egrep、sed -r可以去掉斜线
    \{,n\}     打印前边的那个最多出现n次的字符
grep、egrep的常见用法及选项
grep  正则表达式 文件 
常见选项 -A 前几行 -B 后几行 -C 前后几行 -E 扩展正则表达式 -v 取反
egrep 扩展正则表达式 文件
	+   重复一次或一次以上前面的一个字符。等同于\{n,}
    ?   重复0次或一次前面的一个字符。等同于\{,m}
    |   或者的意思,用或的方式查找多个符合的字符串。
    ()   找出括号内的字符串。
sed流编辑器:
在shell脚本中vi、vim、是不能用的,因为这两个命令是交互式的,
sed的作用就是能够通过非交互式来完成对文件的增删改查操作的
法:sed   选项    '操作符'     文件名 
选项:
  -n    sed默认输出全部内容,-n只输出匹配到的内容;
  -i     修改文件内容;
  -r    支持扩展正则表达式;
  -e    匹配多个command
操作符:
  a		在当前行的下一行添加内容
  c     将选定行替换为指定内容
  d     删除选定的行
  i    	在当前行的上一行添加内容
  p   	打印指定行内容
  s		替换选定字符为指定字符
  awk:报告生成器:
1.awk的作用:一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入stdin、一个或多个文件,或其它命令的输出。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。擅长取行、取列、过滤。
2.语法:
awk  [选项]  '模式{  动作(action) }'  文件1  文件2  ...
选项:	-F    指定输入分隔符,可以是字符串或正则表达式;
最常见的动作:	print、printf

Awk以-F为域分隔符,当分隔符为空格的时候,是不用写-F的


3.awk的基本原理特征:
1)每一次取一行
2)根据指定的分隔符(不指定是位空白字符)将该行切割位列,使用$0(整行),$1,$2,$3...(第一列,第二列,...)
awk的匹配范围
  $1==""						##精确匹配等于
  $1!=""						##精确匹配不等于
  $1~""						    ##包含匹配等于
  $1!~""						##包含匹配不等于
 awk区块原理
 区域构成: 
BEGIN { 动作 }     ##开始处理第一行文本之前的操作
{ 动作 }           ##针对每一行文本的处理操作
END { 动作 }       ##处理完最后一行文本之后的操作
awk的变量:
awk变量:
FS:列分隔符,默认位空白    相当于选项-F
RS:行分隔符,默认位换行符
OFS:输出列分隔符
ORS :输出行分隔符
awk内置变量:
NR:处理中行数
FNR:单个文件的行数
NF:列的个数
还有些awk的高级用法,自行了解


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值