shell脚本相关-----awk

统计行数
awk 'END { print "total:" NR}' a3.txt

显示空行
awk '/^$/ {print NR}' a2.txt 

第二列求和
awk '{sum1+=$2} END {print sum1}' a3.txt 

第二列求avg
awk '{avg +=$2/NF} END {print avg}' a3.txt
awk '{avg +=$2} END {print avg/NF}' a3.txt

单词数
awk '{total+=NF}END{print total}' a3.txt

字符串的数量
awk '{total+= lenth} END {print total}' a3.txt

首行添加标题,并重新排序
awk 'BEGIN {print "name\value"} {print $2,$1}' a3.txt

输出带有某字符的行
awk '/7/ {print}' a3.txt

输出以a开头的行
awk '$1 ~ /^a/ {print}' a3.txt 

定义函数:
awk 'function test(x){return "value is:"x}{print test($2)}' a3.txt 

根据条件执行不同的操作:
awk '{if ($2>50)print $2">50";else print $2"<50"} ' a3.txt

统计不同ip地址都访问次数
awk '{count[$1]++} END {for (ip in count) print ip,count[ip]}' access.log

批量添加.bak文件
ls | awk '{print "cp "$0" "$0".bak"}' | sh

监控文件变化:
ls -lh /home/ | awk '{print $5,$6,$8,$7,$9}'

计算某个进程的内存使用量:
ps -p 1539 -o rss | awk 'NR>1{print $1}' 

获取内网外网ip地址:
ifconfig | awk '/inet / {print $2}'

使用awk实现加法:
echo 2+3 | awk '{print $0"=" $1+$3}'

shell相关:
检查文件是否存在
if[-e /root/file1.txt ]; then echo "存在"; else echo "不存在"; fi

无序数据排序:
sort -n | awk  '{print ""  $2}' a3.txt |sh


搜索指定文件夹里面的内容:
grep -r "123" /root | cut -d ":" | sort -u

wc去重排序:
 awk -F "[ ,. ]+" '{for(i=1;i<=NF;i++)s[$i]++} END {for (key in s) print s[key],key}' a3.txt |sort -rn | head | head 


找出局域网内存活的主机
ping 127.0.0.1 -c 2 | awk 'NR==6{print $4}'
#如果ip地址存活就是2个数据包,如果不存活就是1,由此可以递归扫描网段里面存活的服务器
eg:
#bin/bash
count =0
for i in 192.168.0.{1..254}
do
    receive = $(ping $i -c 2 | awk 'NR==6{print $4}')
    if [$receive -gt 0]
    then
        echo "${i} 在线"
        let count++
    else
        echo "${i} 不在线"
    fi
done
echo "在线服务器的个数:"${count}

备份mysql的数据

#!/bin/sh
user=root
pass=root

backfile=/root/mysgl/backup #备份路径
[ ! -d Sbackfile ] && mkdir -p sbackfile #判断是否有备份路径cmd="mysg1 -u$user -p$pass" #登录数据库dump="mysqldump -u$user -p$pass " #mysgldump备份参数dblist=Scmd -e "show databases;"2>/dev/nul1 sed dlegrep -y "_schema mysql" #获取库名列
echo"需要备份的数据列表:"
echo $dblist
echo"开始备份:"
for db_name in Sdblist #for循环备份库列表
do
    printf正在备份数据库:%s’ $db_name了
    Sdump Sdb_name 2>/dev/nul1 gzip sfbackfile}/sdb_name_S(date +%m%d).sgl,gz #库名+时间份打包至指定路径下printf,,备份完成\n'
done
echo"全部备份完成!!!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿虎什么都想学一点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值