day7-正则表达式和grep命令练习

练习1:(正则表达式)

1、显示/proc/meminfo文件中以大小s开头的行(要求:使用俩种方法)

正则:grep '^\(s\|S\)' /proc meminfo
           grep '^s\|^S' meminfo
扩展:grep -E '^(s|S)'

2、显示/etc/passwd文件中不以/bin/bash结尾的行

正则:grep -v '\(/bin/bash\)$' /etc/ passwd
扩展:grep -vE '(/bin/bash)$' passwd

3、显示用户rpc默认的shell程序

 

4、找出/etc/passwd/中的俩位或者3位数

grep -v '[0-9]\{4\}' /etc/passwd|grep '[0-9]\{2,3\}'

5、显示centos7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行

sudo cat grub2.cfg|grep '^[[:space:]]'|grep -v '^[[:space:]]*$'

6、找出netstat -tan命令结果中以LISTEN后跟任意个空白字符结尾的行

netstat -tan |grep '\(\<LISTEN\>[[:space:]]*\)$'

7、显示centos7上所有UID小于1000以内的用户名和UID

cut -d: -f1,3 /etc/passwd |grep -v '[0-9]\{4,\}'

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

cut -d: -f1,3,7|grep -e root -a -e mage -a -e wang|cut -d: -f2,3

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

cat /etc/rc.d/init.d/functions|egrep '^([[:alpha:]].*|\_)\(\)'

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

echo "/etc/rc.d/init.d/functions" |egrep -o '[a-z]+$'
echo "/etc/rc.d/init.d/functions" |egrep -o '[a-z]+{9}$'

4、使用egrep取出上面路径的目录名

echo "/etc/rc.d/init.d/functions"|egrep -o '\/.*\/'

5、统计last命令中以root登录的每个主机IP地址登录次数

last|tr -s ' ' '%'|cut -d% -f1,3|grep root|wc -l

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:

 

posted @ 2020-11-16 21:04  馒头ops  阅读(198)  评论(0)    收藏  举报