shell脚本中常用命令——cut,sort,uniq,&&和||

cut

  • cut 命令多用于字符截取
cut -d指定分隔符
cut -f指定截取的列
cut -c指定截取的字符位置

举例:

cp /etc/passwd /mnt
cd /mnt

cut -d : -f 1 passwd   分隔符:的第一列
cut -d : -f 1,3 passwd 第1,3列
cut -d : -f 1-3 passwd  第1-3列
cut -c 2-4  passwd   第2-4个字符
cut -c 2,5 passwd 第2,第5个字符

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

sort

  • 多用于字符排序
sort -n纯数字排序
sort -r倒序
sort -u去掉重复数字
sort -o输出到指定文件中
sort -t指定分隔符
sort -k指定要排序的列

举例:

给文件test里随意添加数字
sort test   ##比较第一个字符的大小,并排序
sort -n test   ##排序
sort -nr test  ##倒序
sort -nru test   ##倒序并且去掉重复数字
sort -nru test -o westos   ##把结果输入到文件里westos
cat westos

给test中加入分隔符:和数字
sort -n test 按照第一个数字排序
sort -t : k 2 -n test  指定分隔符,并按照分隔符后的数字排序

去掉分隔符和数字
sort -nu test  去掉重复的,u=uniqe

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

uniq

  • 对重复字符做相应的处理
uniq -u显示唯一的行
uniq -d显示重复的行
uniq -c每行显示一次并统计重复次数

举例:

sort -n test | uniq -c         ##排序,并在前面统计每个数出现的次数
sort -n test | uniq -d        ##显示有重复的行的值
sort -n test | uniq -u          ##显示没有重复,唯一的行的值

在这里插入图片描述

测试

抓取登陆过你的主机的ip,并显示出登陆次数最多的那个。

last -i查看
grep -v 反向过滤
grep -E 扩展的grep
man grep 

几种方法:

1
last -i | grep 0.0.0.0 -v | cut -d " " -f 14 | uniq -c | sort -nr  -t " " -k 5 | head -n 1

含义:显示ip,过滤0.0.0.0的行,取第14个字符开始的ip列,统计每个ip出现的次数,反向排序,取最高的值也就是第一行
2
last -i | grep 0.0.0.0 -v | cut -d " " -f 14 | uniq -c | sort -nr  | head -n 1

不用取消分隔符也可以

在这里插入图片描述

3
last -i | grep 0.0.0.0 -v | grep wtmp -v | cut -d " " -f 14  | uniq -c | sort -rn | head -n 1
如果有wtmp列,将他反向过滤掉:
4
利用awk和扩展的grep:grep -E
grep -E 可以实现多模式匹配,同时过滤0.0.0.0和wtmp的行,awk'{print $3}' 取第三列:
last -i | grep -E "0.0.0.0|wtmp " -v | awk '{print $3}'

最终语句:
last -i | grep -E "0.0.0.0|wtmp " -v | awk '{print $3}' | uniq -c |sort -nr | head -n 1

在这里插入图片描述

&&和||

  • && 条件为真,|| 条加为假
测试

编写一个脚本,测试网络是否通畅(ping ip能否ping通)。

-w wait 等待时间  不通的话时间会很长
-c count 次数
-e 颜色的设定
0m 关掉颜色的设定属性
  • 没有颜色的版本:
vim ping.sh

#!/bin/bash
ping -c 1 -w 1 $1 &> /dev/null && echo "$1 is up" || echo "$1" is down 

chmod +x ping.sh

执行结果:
在这里插入图片描述

  • 有颜色的版本:
    在这里插入图片描述
#!/bin/bash
ping -c 1 -w 1 $1 &> /dev/null && {
        echo -e "\033[32m$1 is up\033[0m"     32是绿
        }||{
        echo -e "\033[31m$1 is down\033[0m"         31是红
        }

执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值