文本处理工具及shell编程

一、统计出/etc/passwd文件中其默认为非/sbin/nologin的用户个数,并将用户都显示出来。

1.查看/etc/passwd文件,以便制定筛选的条件

在这里插入图片描述

2筛选出非/sbin/nologin类型的用户

cat /etc/passwd | grep -v '/sbin/nologin$'

grep: Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件

grep -v :显示不被pattern匹配到的行,即取反
$ #行尾锚定,用于模式的最右侧
在这里插入图片描述

3. 统计符合条件的用户个数

cat /etc/passwd | grep -v ':/sbin/nologin$'| wc -l

wc 命令可用于统计文件的行总数、单词总数、字节总数和字符总数
可以对文件或STDIN中的数据统计

常用选项:
-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度

在这里插入图片描述

4.显示用户

/etc/passwd文件中以:作为分隔符,第一个字段即为用户名

cat /etc/passwd | grep -v ':/sbin/nologin$'| cut -d: -f1

在这里插入图片描述
cut 命令可以提取文本文件或STDIN数据的指定列
常用选项:
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段,例如:3
#,#[,#]:离散的多个字段,例如:1,3,6
#-#:连续的多个字段, 例如:1-6
混合使用:1-3,7
-c 按字符切割
–output-delimiter=STRING指定输出分隔符

二、查出用户UID最大值的用户名、UID及shell类型

cat /etc/passwd |cut -d: -f1,3,7 | sort -t: -k2 -n -r | head -n1

在这里插入图片描述

1.提取/etc/passwd文件中的用户名、UID及shell类型

在这里插入图片描述

cut -d: -f1,3,7

以:作为分隔符,提取第1、3、7列的信息对应为用户名、UID及shell类型

3.查找UID最大的用户名、UID及shell类型

cat /etc/passwd |cut -d: -f1,3,7 | sort -t: -k2 -n -r

sort:文本排序
常用选项
-r 执行反方向(由上至下)整理
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,如: 2K 1G
-f 选项忽略(fold)字符串中的字符大小写
-u 选项(独特,unique),合并重复项,即去重
-t c 选项使用c做为字段界定符
-k # 选项按照使用c字符分隔的 # 列来整理能够使用多次

在这里插入图片描述

sort -t: -k2 -n -r 

以“:”作为字段界定符,第二列即UID按照数字大小整理(默认从小到大),加-r执行反方向,即从大到小。

3.取第一行

cat /etc/passwd |cut -d: -f1,3,7 | sort -t: -k2 -n -r | head -n1

在这里插入图片描述

三、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序

1.查看连接本机的IP

netstat -nt

netstat 用于显示linux中各种网络相关信息。如网络链接、路由表、接口状态链接、多播成员等等。
参数含义介绍
-t (tcp)仅显示tcp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。

在这里插入图片描述

2.取后三行至行尾

netstat -nt|tail -n +3

在这里插入图片描述

3.提取IP信息

netstat -nt|tail -n +3|tr -s ' ' :|cut -d: -f6

在这里插入图片描述

4.去重排序

netstnetstat -nt|tail -n +3|tr -s ' ' :|cut -d: -f6|uniq -c|sort -n -

在这里插入图片描述
uniq命令从输入中删除前后相接的重复的行,-c: 显示每行重复出现的次数。

四、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值

#!/bin/bash
echo "disk use max is : `df -h|tail -n +2|tr -s ' ' :|cut -d: -f1,5|sort -t: -k2 -nr|head -n1` "

给脚本加上执行权限
在这里插入图片描述
执行结果:
在这里插入图片描述

五、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小

#!/bin/bash
BLUE="\E[1;34m"
GREEN="echo -e \E[1;32m"
END="\E[0m"
$GREEN----------------------Host systeminfo--------------------$END
echo -e "HOSTNAME:$BLUE`hostname`$END"
echo -e "IPADDR:$BLUE `ifconfig ens33|grep -Eo ' ([0-9]{1,3}\.){3}[0-9]{1,3} '|head -n1`$END"
echo -e "OSVERSION:$BLUE`cat /etc/centos-release`$END"
echo -e "KERNER:$BLUE `uname -r`$END"
echo -e "CPU:$BLUE`lscpu|grep 'Model name'|tr -s ' '|cut -d : -f2`$END"
echo -e "MEMORY:$BLUE`free -h|grep Mem|tr -s ' ' : |cut -d : -f2`$END"
echo -e "DISK:$BLUE`lsblk |grep '^sd' |tr -s ' ' |cut -d " " -f4`$END"
$GREEN---------------------------------------------------------$END

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值