day7-正则表达式和grep命令练习
练习1:(正则表达式)
1、显示/proc/meminfo文件中以大小s开头的行(要求:使用俩种方法)
2、显示/etc/passwd文件中不以/bin/bash结尾的行
3、显示用户rpc默认的shell程序
4、找出/etc/passwd/中的俩位或者3位数
grep -v '[0-9]\{4\}' /etc/passwd|grep '[0-9]\{2,3\}'
5、显示centos7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
6、找出netstat -tan命令结果中以LISTEN后跟任意个空白字符结尾的行
7、显示centos7上所有UID小于1000以内的用户名和UID
8、添加用户bash,testbash,basher,sh,nologin(其shell为/bin/bash),找出/etc/passwd用户名和shell同名的行
后项引用:
9、利用df和grep,取出磁盘哥分区利用率,并从大到小排序
df -h | grep -o "[0-9]\+%" | sort -nr | grep -Eo "[0-9]{1,3}"
df|grep -o '[0-9]\{1,3\}%'|sort -nr|tr -d %
练习2:扩展正则表达式
1、显示3个用户root、mage、wang的UID和默认shell
2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
3、使用egrep取出/etc/rc.d/init.d/functions中其基名
4、使用egrep取出上面路径的目录名
5、统计last命令中以root登录的每个主机IP地址登录次数
6、利用扩展正则表达式分别表示0-99,10-99,100-199,200-249,250-255
7、显示ifconfig命令结果中所有IPV4地址
ifconfig|egrep -o '([0-9]{1,3}\.){3}[0-9]{1,3}'
8、将此字符串:welcome to magedu linux 中的每一个字符去重并排序,重复次数多的排到前面
echo "welcome to magedu linux" |grep -oE '[a-z]|[A-Z]'|sort|uniq -c|sort -nr
sort:排序,默认按照字母
uniq -c:显示连续的行出现的重复次数
sort -nr:达到小排序,按照n数字
练习3:shell脚本基础
1、编写systeminfo.sh,显示当前主机系统信息,包括:主机名,IPV4地址,操作地址版本,内核版本,CPU型号,内存大小,磁盘大小
#!/bin/bash
echo "HOSTNAME: "`hostname`
echo "IP: "`hostname -I`
echo "OS: "`cat /etc/centos-release`
echo "Kelnel: "`uname -r`
echo "CPU: "`lscpu|egrep -w '(Model name)'|awk -F: '{print $2}'`
echo "Mem: "`free -h|grep Mem|awk '{print $2}'`
echo "Disk: "`lsblk|grep -E '^sd'|awk '{print$4}'`
2、编写脚本backup.sh,可以实现每日将/etc/目录备份到/backup/etcYYYY-mm-dd中
DIR='/backup'
if [ -e $DIR ];then
echo "file is exsits"
else
mkdir $DIR
echo "success create $DIR"
fi
tar -cvf "$DIR/etc`date +%F`.tar.gz" /etc/ .
3、编写脚本disk.sh,显示当前磁盘分区中空间利用率最大的值
df -h|grep -oE '[0-9]{1,3}%'|sort -nr|tr -d %|head -n1
4、编写脚本link.sh,显示正连接本主机的每个远程主机的IPV4地址和连接数,并按照连接数从大到小排序
netstat -tan|awk '{print $5}'|tail -n +3|sort |uniq -c|sort -nr
练习3:

浙公网安备 33010602011771号