grep小练习

简介:

1、显示/proc/meminfo文件中以大写s开头的行,要求使用两种方式

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

3、显示/etc/passwd文件中ID号最大的用户的用户名

4、如果root用户存在,显示其默认的shell程序

5、显示/etc/passwd文件中两位或三位数

6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存在非空白字符的行

7、找出'netstat -tab'命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行

8、添加用户bash,testbash,basher以及nologin,要求nologin的shell为/sbin/nologin,而后找出/etc/passwd文件中用户名同shell名的行


1、显示/proc/meminfo文件中以大写s开头的行,要求使用两种方式

1
2
# grep -i '^s' /proc/meminfo
# grep '^[sS]' /proc/meminfo

结果

1
2
3
4
5
6
7
SwapCached:          172 kB
SwapTotal:       1049596 kB
SwapFree:        1048880 kB
Shmem:               676 kB
Slab:              30440 kB
SReclaimable:      17672 kB
SUnreclaim:        12768 kB

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

1
2
3
4
# grep -v '/bin/bash$' /etc/passwd
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
.....

3、显示/etc/passwd文件中ID号最大的用户的用户名

1
2
3
4
5
6
7
8
# sort -n -r -t':' -k3 /etc/passwd | head -n 1
nfsnobody:x:65534:65534:Anonymous NFS User: /var/lib/nfs : /sbin/nologin
 
# awk -v FS=':' 'BEGIN{print "----------------------------------"}{if(NR==1){MIN=$3;MAX=MIN;USER=$1;MINUSER=$1}};{if(NR!=1){if($3>MAX){MAX=$3;USER=$1};if($3<MIN){MIN=$3;MINUSER=$1}}}END {printf "MAX_UID: %-10i USER: %s\nMIN_UID: %-10d MIN_USER: %s\n-----------------------------------\n",MAX,USER,MIN,MINUSER}' /etc/passwd
----------------------------------
MAX_UID: 65534      USER: nfsnobody
MIN_UID: 0          MIN_USER: root
-----------------------------------

4、如果root用户存在,显示其默认的shell程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# grep -q '^root\b' /etc/passwd && printf "root exist and default shell is " && grep '^root\>' /etc/passwd | cut -d':' -f7
root exist and default shell is  /bin/bash
 
# sed -n '/^root\>/p' /etc/passwd > /dev/null 2>&1 && echo -ne 'root exist and default shell is\t' && sed -n '/^root\>/p' /etc/passwd | awk -v FS=':' '{print $NF}'
root exist and default shell is     /bin/bash
 
# awk -F':' '$1 ~ /\<root\>/{print $NF}' /etc/passwd
/bin/bash
 
# awk -F':' '$1 == "root"{print $NF}' /etc/passwd
/bin/bash
 
# sed -n "`awk -F':' '$1 == "root" {print NR}' /etc/passwd`p" /etc/passwd 
root:x:0:0:root: /root : /bin/bash


5、显示/etc/passwd文件中两位或三位数

1
2
3
4
5
方法一:
# grep -o '\<[0-9]\{2,3\}\b' /etc/passwd
# grep -o '\<[[:digit:]]\{2,3\}\b' /etc/passwd
方法二:
# egrep -o '\<[[:digit:]]{2,3}\b' /etc/passwd

6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面存在非空白字符的行

1
2
3
# grep '^[[:space:]]\+[^[:space:]]' rc.sysinit 
# sed -n '/^[[:space:]]\+[^[:space:]]/p' rc.sysinit
# awk '/^[[:space:]]+[^[:space:]]/ {print }' rc.sysinit

7、找出'netstat -tab'命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行

1
# netstat -tan | grep 'LISTEN[[:space:]]*'

8、添加用户bash,testbash,basher以及nologin,要求nologin的shell为/sbin/nologin,而后找出/etc/passwd文件中用户名同shell名的行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@izpo45bh60h6bsz ~] # useradd bash
[root@izpo45bh60h6bsz ~] # useradd testbash
[root@izpo45bh60h6bsz ~] # useradd basher
[root@izpo45bh60h6bsz ~] # useradd -s /sbin/nologin nologin
 
# grep '\(^[[:alnum:]]\+\>\).*\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:2018:2018:: /home/nologin : /sbin/nologin
 
# sed -n '/\(^[[:alnum:]]\+\>\).*\1$/p' /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:2018:2018:: /home/nologin : /sbin/nologin
 
# awk -F':' '{split($NF,A,"/")}{if (A[3] == $1){print}}' /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:2018:2018:: /home/nologin : /sbin/nologin










本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1952534,如需转载请自行联系原作者
目录
相关文章
|
消息中间件 分布式计算 监控
Python面试:消息队列(RabbitMQ、Kafka)基础知识与应用
【4月更文挑战第18天】本文探讨了Python面试中RabbitMQ与Kafka的常见问题和易错点,包括两者的基础概念、特性对比、Python客户端使用、消息队列应用场景及消息可靠性保证。重点讲解了消息丢失与重复的避免策略,并提供了实战代码示例,帮助读者提升在分布式系统中使用消息队列的能力。
730 2
软件包 python-m2crypto 没有可安装候选
软件包 python-m2crypto 没有可安装候选
1454 0
|
弹性计算 数据安全/隐私保护
阿里云上怎样搭建幻兽帕鲁Palworld游戏服务器,流程介绍
在数字游戏的浪潮中,与好友联机共游已成为一种新风尚。最近备受瞩目的幻兽帕鲁,你是否已经跃跃欲试,想和好友一同探索这片神秘的世界?今天,就为大家带来一篇实用的教程,教你如何轻松搭建属于自己的幻兽帕鲁游戏服务器,与好友畅享云端乐趣。
132 2
|
11月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
458 0
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
|
缓存 人工智能 算法
Nvidia_Mellanox_CX5和6DX系列网卡_RDMA_RoCE_无损和有损_DCQCN拥塞控制等技术简介-一文入门RDMA和RoCE有损无损
Nvidia_Mellanox_CX5和6DX系列网卡_RDMA_RoCE_无损和有损_DCQCN拥塞控制等技术简介-一文入门RDMA和RoCE有损无损
4232 0
|
编解码 监控 Linux
采集音频和摄像头视频并实时H264编码及AAC编码
采集音频和摄像头视频并实时H264编码及AAC编码
377 0
|
安全 Java 数据库连接
java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/YamlProcessor$StrictMapAppe
java.lang.NoClassDefFoundError: org/springframework/beans/factory/config/YamlProcessor$StrictMapAppe
287 0
文字游戏模拟器(是龙与地下城的简化版)
文字游戏模拟器(是龙与地下城的简化版)
351 0
|
计算机视觉
图像处理之局部二值特征
图像处理之局部二值特征
227 0
|
算法 自动驾驶 开发者
Cityscapes数据集(智能驾驶场景的语义分割)
面向智能驾驶(辅助驾驶、自动驾驶)场景下的语义分割任务,由于非结构化场景的复杂性,是一个非常具有挑战性的任务,所以有许多研究者和研究机构公开了很多相关的数据集推动语义分割领域的发展。本文主要介绍Cityscapes数据集。
1737 0

热门文章

最新文章