shell 5-6合集
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,sell 5回顾正则表达式基本正则 ^ $ [abc] [^] . * \{n,m\} \{n\} \{n,\} \(\)扩展正则+ ? {n,m} a|b|c (
千家信息网最后更新 2025年01月23日shell 5-6合集
sell 5
回顾
正则表达式基本正则 ^ $ [abc] [^] . * \{n,m\} \{n\} \{n,\} \(\)扩展正则+ ? {n,m} a|b|c () \b
sed 非交互式编辑文本
前置命令 | sed 选项 (定址符)指令 sed 选项 (定址符)指令 被处理的文档选项 : -n -r -i指令: p d s
==============================
a行下添加 i行上添加 c替换整行
找到使用bash的用户,按照 用户名 --> 密码的方式显示
#!/bin/bashn=`sed -n '/bash$/s/:.*//p' /etc/passwd`for i in $n 将找到的使用bash的用户名交给for循环do p=`grep $i: /etc/shadow` 将名字与shadow对比 p1=${p#*:} 找到对应的行,掐头 p2=${p1%%:*} 去尾,得到纯粹的密码 echo "$i --> $p2" 输出最后结果done
awk 精确搜索文档
用法:awk 选项 (条件)指令 被处理的文档前置指令 | awk 选项 (条件)指令
awk '{print}' test 输出所有awk '{print $2}' test 输出每行第2列awk '/hello/{print $2}' test 找到有hello的行,输出他的第2列awk的内置变量 $1 $2 $3..... $0 所有列 NR行号 NF列号
awk默认分隔符为空格,可以使用-F修改分隔符awk -F: '{print $1}' user 定义分隔符为冒号, 输出第一列awk -F[:/] '{print $10}' user 定义分隔符为冒号或者斜线, 输出第10列
awk -F: '{print $1"的解释器是"$7}' user 输出特定列,常量+变量ifconfig eth0 | awk '/RX p/{print "本机eth0的接收流量是"$5"字节"}' 获取网卡接收流量ifconfig eth0 | awk '/TX p/{print "本机eth0的发送流量是"$5"字节"}' 获取网卡发送流量
df -h | awk '/vda1/{print "当前主机跟分区剩余空间是"$4}' 获取根分区剩余空间awk '/Failed/{print "***者的ip是"$11}' /var/log/secure
awk的工作时机
BEGIN任务 执行1次逐行任务 执行N次END任务 执行1次BEGIN{ }{ }END{ }awk 'BEGIN{指令} {指令} END{指令}' 文件awk 'BEGIN{print "ABCD"}{print}END{print NR}' user tab键 \t 制表符awk -F: 'BEGIN{print "User\tUid\tHome"}{print $1"\t"$3"\t"$6 }END{print "总计 "NR" 行"}' user
========================================
awk处理条件
1, 使用正则作为条件
awk -F: '/^root/{print $1}' user 找以root开头的行,输出第1列awk -F: '/^root|^bin/{print $1}' user 找以root或者bin开头的行,输出第1列awk -F: '/^(root|bin)/{print $1}' user 同上awk -F: '$1~/root/{print $1}' user 找第一列包含root的行,并且输出第1列awk -F: '$1!~/root/{print $1}' user 第一列不包含root
2, 数字与字符串做条件 == != > >= < <=
awk -F: 'NR==1{print}' user 输出第1行awk -F: 'NR>2{print}' user 输出行号大于2的行awk -F: 'NR>=2{print}' user 输出行号大于等于2的行awk -F: '$1=="root"{print}' /etc/passwd 输出第1列是root的行awk -F: '$1~/root/{print}' /etc/passwd 输出第1列包含root的行awk -F: '$1~/oot/{print}' /etc/passwd 输出第1列包含oot的行awk -F: '$3>1000{print}' /etc/passwd 输出第三列大于1000的行
3, 使用逻辑符号 && 并且 || 或者
awk 'NR>=2 && NR<=4{print}' user 输出2~4行awk 'NR<=1 || NR>4{print}' user 输出第1行,或者大于4的行awk -F: '$3>=1000 && $3<=1005' /etc/passwd 当任务只是print时可以省略{print} 输出所有普通用户的家目录与解释器 例如: 张三的家目录是XXX ,解释器是 XXXawk -F: '$3>=1000 && $3<=1100{print $1"的家目录是"$6",解释器是"$7 }' /etc/passwd
4,运算
awk 'BEGIN{x++;print x}' 把x+1 然后输出x的值awk 'BEGIN{x=8;print x+=2}' 定义变量x=8, 然后+2再输出结果awk 'BEGIN{x=8;x--;print x}' x定义好,然后减1,输出awk 'BEGIN{print 2+3}' awk 'BEGIN{print 2*3}'awk 'BEGIN{print 2*3}'
shell 6
回顾
awk 精确搜索文档-F 定义分隔符 print$1 $2 $3 .... $0 NR NF ""正则表达式 / / ~ !~字符串与数字 == != > >= < <=逻辑符号 && ||运算 x++
=============================
在awk中使用if判断
单分支:awk '{if(/bash$/){x++}}END{print x}' user 如果找到以bash结尾的行,就把x+1,最后输出x的值awk -F: '{if($3>=1000){x++}}END{print x}' /etc/passwd 如果第3列(UID)大于等于1000,则把x+1,,最后输出x的值双分支:awk -F: '{if($3>=1000){x++}else{y++}}END{print x,y}' /etc/passwd 如果第3列(UID)大于等于1000,则把x+1,否则把y+1,最后输出x与y的值
awk数组,数组可以理解为能保存多个值的特殊变量
数组名[下标]=元素值awk 'BEGIN{a[1]=100;a[2]=200;print a[2],a[1]}'awk 'BEGIN{a["x"]=100;a["y"]=200;print a["y"],a["x"]}'awk 'BEGIN{a["x"]="abc";a["y"]="xyz";print a["y"],a["x"]}'
在awk中使用数组+for循环实现遍历数组
awk 'BEGIN{a[1]=100;a[2]=200;a[3]=300;for(i in a){print i,a[i]}}'awk '{a[$1]++}END{for(i in a){print a[i],i}}' abca[abc]=3a[xyz]=2a[zxc]=1a[192.168.0.1]=3a[172.10.10.10]=2a[100.100.100.100]=1
使用awk统计网站访问量:
/var/log/httpd/access_log是httpd服务的访问日志awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log 最终显示访问的次数与对应的ip地址ab -c 1 -n 10000 http://172.25.0.11/ 访问10000次awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' /var/log/httpd/access_log | sort -nr 统计完之后再排序,访问量最大的在第一行
#!/bin/bashn=`uptime |sed -n 's/.*://p'`echo 主机平均负载是$nifconfig eth0 | awk '/RX p/{print "主机的eth0 网卡接收流量是"$5"字节"}'ifconfig eth0 | awk '/TX p/{print "主机的eth0 网卡发送流量是"$5"字节"}'free -h |awk '/^Mem/{print "主机剩余内存容量是"$4}'df -h | awk '/\/$/{print "根分区剩余容量是"$4}'awk 'END{print "当前主机用户总数是"NR}' /etc/passwdw=`who | wc -l`echo 当前登录的账户数量是$w个p=`ps aux | wc -l`echo 当前主机开启的进程数量是$p个r=`rpm -qa | wc -l`echo 当前主机安装的软件包数量是$r个
输出
指令
主机
流量
分隔符
数组
条件
正则
变量
字节
文档
用户
网卡
剩余
任务
数量
行号
处理
精确
冒号
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
虚拟机怎么屏蔽服务器
数据库的数据独立性是指
吉林省知了互联网科技
广州正规软件开发价格表
用友nc报表数据库
陕西网络安全测评机构
软件开发外派价钱
外网代理服务器闲鱼
数据库技术类型
网络数据库技术是干什么的
国内有名的软件开发
荥阳蝶变网络技术服务公司
服务器如何取消回弹
我的世界服务器虚空之遗
安徽多功能软件开发制造价格
深圳商城软件开发价钱
日照移动城管软件开发公司
数据库nm的并集
武汉嵌入式软件开发公司排名
南京单片机软件开发
网络安全与管理论文
int2范围 数据库
网络安全员实习生
唐诗英译数据库
我的世界神奇宝贝喵物语服务器
网络安全的目标 文章
戴尔服务器产品线
sql怎么建立数据库索引
数据库重复记录只显示一条
网络安全等级保护实施资质