0
点赞
收藏
分享

微信扫一扫

自动化运维(二)

一、Shell特殊字符

1、反斜线“\”

1、转义特殊字符
2、换行输入多行命令
[root@server ~]# find / \
> -name "test" \
> -type f

2、单引号

必须成对出现,能够屏蔽Shell元字符,表现为强引

3、双引号

类似于单引号,但不会屏蔽Shell元字符,表现为弱引

4、反引号

反引号里面只能放命令,输出的是命令的结果,等同于$()

二、正则表达式

1、基本正则表达式

自动化运维(二)_awk

2、扩展正则表达式

自动化运维(二)_bash_02

3、POSIX规范

自动化运维(二)_正则表达式_03

三、sed

Stream Editor 流式编辑器,逐行处理

sed [选项] ‘条件指令’ 文件.....
选项:-n 屏蔽输出 -i 直接修改文档 -r 支持扩展正则
条件指令:p 显示 d 删除 s 替换 a 增加 i 插入 = 显示行号 c 整行替换
$c 最后一行替换 r 读取文件内容 w 写入内容
3,6p 表示3到6行 3P;6P 3行和6行 1~2p 打印奇数行 3,+10p:第三行和后面的10行
例子:
sed -n '$d' #删除最后一行 sed '1s/2017//2' #将第一行的第二个2017替换为空
sed 's/.//2;s/.$//' #删除第二个字符和最后一个字符
sed -r 's/^(.)(.*)(.)$/\3\2\1/' #第1个字符与最后一个字符替换 ()有保留的意思
sed 's/[0-9]//g' #删除数字 sed -r 's/^ +//g' #删除每行前面的空格

四、awk

1、简介

sed 查看修改文本
awk 查看文本内容,可以实现复杂的搜索功能
基于模式匹配检查输入文本,逐行处理并输出
单独用时,可以对文本数据做统计

2、语法格式

awk  [选项]  ‘[条件] {指令}’  文件
默认以空格和Tab键隔开
选项:-F 指定分隔符:-F[:/] #以:和/作为分隔符,:和/之间也是单独一列,且为空
指令:NR 文件当前行号 NF 文件当前行的列数
例子:
awk '{print $0,$2}' #逗号代表空格
awk '{print $1"666"}' #在后面添加666
awk '/Failed/{print $11}' /var/log/secure #在系统安全日志文件中筛选出远程本机失败的IP地址
awk '/root/' /etc/passwd #指令只有print可以省略
awk '$1~/root/' #匹配第一列为root的行
seq 10 | awk '$1%3==0' #显示10以内3的倍数
awk [选项] 'BEGIN{指令}{指令}END{指令}' 文件
例子:awk -F: 'BEGIN{print "User\tUID\tHome"}{print $1"\t"$3"\t"$6}END{print “总共”NR“行”}' b.txt #\t代表Tab键
User UID Home
root 0 /root
bin 1 /bin
daemon 2 /sbin
adm 3 /var/adm
lp 4 /var/spool/lpd
总共5行

awk高级用法:

与if语句结合
单分支:awk -F: '{if($3>1000){i++}}END{print i}' /etc/passwd #统计UID大于1000的用户个数
双分支: awk -F: '{if($7~/bash$/){i++}else{j++}}END{print x,j}' #统计以bash结尾的个数和不以bash结尾的个数
与数组结合
awk 'BEGIN{a[0]=0;a[1]=11;a[2]=22;for(i in a){print i,a[i]}}' #打印数组下标和值
sort命令,选项为-r、-n、-k。其中-n表示按数字顺序升序排列,而-r表示反序,-k可以指定按第几个字段来排序。
awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log |sort -rn #统计web访问排名


举报

相关推荐

0 条评论