grep与正则表达式02-相关练习题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep与正则表达式02-相关练习题相关的知识,希望对你有一定的参考价值。
(1)、显示/proc/meminfo 文件中以大小s 开头的行
# grep -i ‘^s‘ /proc/meminfo
(2)、显示/etc/passwd 文件中不以/bin/bash 结尾的行
#grep -v ‘\/bin\/bash$‘ /etc/passwd
(3)、显示/etc/passwd 文件中ID 号最大的用户的用户名及其shell
方法1: # cat /etc/passwd|cut -d: -f3|sort -n|tail -1|xargs getent passwd|cut -d: -f1,7 nfsnobody:/sbin/nologin 方法2 : # sort -t: -k3 -n /etc/passwd|tail -1|cut -d: -f1,7 nfsnobody:/sbin/nologin
(4)、显示用户rpc 默认的shell 程序
方法1:# grep -w ‘^rpc‘ /etc/passwd |awk -F: ‘{print $7}‘ 方法2:# grep ‘\<rpc\>‘ /etc/passwd |cut -d: -f7
(5)、找出/etc/passwd 中的两位或三位数
# grep -o ‘[0-9]\{2,3\}*‘ /etc/passwd
(6)、显示/etc/grub2.cfg 文件中,至少以一个空白字符开头的且后面存非空白字符的行
# egrep ‘^[[:space:]]+[^[:space:]]‘ /etc/grub2.cfg
(7)、找出"netstat -tan"命令的结果中以‘LISTEN‘后跟0个、1个或多个空白字符结尾的行
# netstat -tan|grep "LISTEN[[:space:]]*$"
(8)、取出远程连接到本机的IP地址,并排序。
方法1: [[email protected] ~]# netstat -tnp|awk -F "[ :]+" ‘NR>2{print $6}‘|uniq -c|sort -r 2 172.16.251.121 1 172.16.250.14 方法2: [[email protected] ~]# netstat -tnp|tail -n +3|awk -F "[ :]+" ‘{print $6}‘|uniq -c|sort -r 2 172.16.251.121 1 172.16.250.14 体会这里者tail -n +3 这里表示从第3行开始打印最后的行(包括第3行)
方法3: [[email protected] ~]# netstat -tnp|tail -n +3|cut -d: -f2|tr -s " "|cut -d " " -f2|uniq -c|sort -r 2 172.16.251.121 1 172.16.250.14 体会这里的tr -s 表示将相邻两个字段之间的分隔符压缩为1个 例如: [[email protected] ~]# cat test.txt 1:::::::::::2:::3 [[email protected] ~]# tr -s ":" <test.txt 1:2:3
(9)、找出/etc/passwd 文件中用户名和shell名一致的行
方法1: [[email protected] ~]# egrep "^(.*):.*\1$" /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt nologin:x:1004:1004::/home/nologin:/sbin/nologin 方法2: [[email protected] ~]# egrep ‘(\<[[:alpha:]]*\>).*\1$‘ /etc/passwd sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt nologin:x:1004:1004::/home/nologin:/sbin/nologin
(10)、显示当前系统root 、mage 或wang 用户的UID和默认shell
# egrep "^root\>|^mage\>|^wang\>" /etc/passwd|cut -d: -f3,7
(11)、找出/etc/rc.d/init.d/functions 文件中某单词(包括下划线)后面跟一个小括号的行
# egrep ‘[[:alpha:]0-9_]+\(\)‘ /etc/rc.d/init.d/functions
(12)、使用egrep 取出/etc/rc.d/init.d/functions 中其基名
[[email protected] ~]# echo "/etc/rc.d/init.d/functions"|egrep -o ‘[[:alpha:].]+/?$‘ functions [[email protected] ~]# echo "/etc/rc.d/init.d/"|egrep -o ‘[[:alpha:].]+/?$‘ init.d/ 好好体会一下?的妙用 最简单的方法:basename、dirname [[email protected] ~]# basename /etc/rc.d/init.d/functions functions [[email protected] ~]# dirname /etc/rc.d/init.d/functions /etc/rc.d/init.d
(13)、使用egrep 取出上面路径的目录名
# echo "/etc/rc.d/init.d/functions"|egrep -o "^.*/"
(14)、找出ifconfig 命令结果中本机的IPv4 地址
[[email protected] ~]# ifconfig eno16777736|head -2|tail -1|cut -d " " -f10 172.16.251.126 [[email protected] ~]# ifconfig eno16777736|awk -F" " ‘NR==2{print $2}‘ 172.16.251.126 [[email protected] ~]# ifconfig eno16777736|awk -F "[ ]+" ‘NR==2{print $3}‘ 172.16.251.12
(15)、查出/tmp 权限以数字形式显示
使用stat命令
方法1: [[email protected] ~]# stat /tmp |head -4|tail -1|egrep -o "[0-9]{4}" 1777 方法2: [[email protected] ~]# stat /tmp |head -4|tail -1 Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) [[email protected] ~]# stat /tmp |head -4|tail -1|cut -d / -f1|cut -d "(" -f2 1777
未完待续...
本文出自 “Hello,Linux” 博客,转载请与作者联系!
以上是关于grep与正则表达式02-相关练习题的主要内容,如果未能解决你的问题,请参考以下文章