shell 5-6合集
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,sell 5回顾正则表达式基本正则 ^ $ [abc] [^] . * \{n,m\} \{n\} \{n,\} \(\)扩展正则+ ? {n,m} a|b|c (
千家信息网最后更新 2026年10月31日shell 5-6合集
sell 5
回顾
正则表达式基本正则 ^ $ [abc] [^] . * \{n,m\} \{n\} \{n,\} \(\)扩展正则+ ? {n,m} a|b|c () \bsed 非交互式编辑文本
前置命令 | 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" 输出最后结果doneawk 精确搜索文档
用法: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 第一列不包含root2, 数字与字符串做条件 == != > >= < <=
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/passwd4,运算
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安全错误
数据库的锁怎样保障安全
互联网和科技技术
互联网医疗科技
互联网金融 科技金融
嘟嘟瓜互联网科技
互联网科技公司有哪些
银川新华互联网科技学校地址
千方科技属于互联网企业吗
湖南一路畅行互联网科技
未来五年的互联网科技
青海科技产业互联网发展
东莞新华互联网科技学校
特约风豹互联网科技为什么扣费
济南有互联网科技公司吗
华中科技大学互联网的牛人
深圳互联网科技的发展
萌小萌互联网科技河南有限公司
国产互联网科技公司
科技互联网公司两年变化
互联网科技创新方面的资料
颐高云石互联网科技
华服互联网科技靠谱吗
互联网科技保险
互联网属科技
无线互联网科技
深圳天众互联网科技公司
火传媒上海互联网科技
互联网科技股午盘股票涨跌
移动互联网科技公司
互联网媒体平台算高科技产业
科技互联网专业务虚会材料