shell 5-6合集
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,sell 5回顾正则表达式基本正则 ^ $ [abc] [^] . * \{n,m\} \{n\} \{n,\} \(\)扩展正则+ ? {n,m} a|b|c (
千家信息网最后更新 2025年12月01日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安全错误
数据库的锁怎样保障安全
保障网络安全经费
浙江恩牛网络技术
画风课件软件开发
奥鹏考试服务器连接异常
数据库应用技术形考作业
平度软件开发招聘
竹溪公司软件开发诚信为本
软件开发之增量模式
苹果软件开发工程师怎么样
植物大战僵尸2代理服务器修改
无线网络技术课程报告
河南省网络安全监控指挥系统
山西省通信管理局网络安全管理处
永恒之塔数据库武器
中国vpn服务器安卓
营销数据库什么意思
苏州齐装网络技术有限公司概况
战士下载软件开发
网络安全重大事件处理方案
兰州网众网络技术
深圳市易蓝天网络技术
苹果软件开发工程师怎么样
国家安全教育手抄报网络安全
创建新的access数据库后
南京软件开发招聘
怎么将服务器系统改为中文
网络安全跳槽
cog数据库
服务器热
任子行网络安全审计路由器