Linux文本三剑客grep练习

1、显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行;

[root@shell ~]# grep "^[hH]" /etc/rc.d/rc.rc.sysinit

[root@shell ~]# grep -i "h" /etc/rc.d/rc.sysinit

2、显示/etc/passwd中以sh结尾的行;

[root@shell ~]# grep "sh$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
kxy:x:1000:1000:kxy:/home/kxy:/bin/bash
fox:x:1001:1001::/home/fox:/bin/bash

3、显示/etc/fstab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;

[root@shell ~]# egrep "^#[[:space:]]+[^[:space:]]*" /etc/fstab
# /etc/fstab
# Created by anaconda on Sun Sep 17 13:46:24 2023
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.

4、查找/etc/rc.d/rc.local中包含“以to开始并以to结尾”的字串行;

[root@shell ~]#  egrep -w -o "(to).*\1" /etc/rc.d/rc.local
to previous versions due to

5、查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行;

[root@shell ~]# grep -w -o "s[a-z]*d" /etc/inittab 
systemd
systemd

6、查找ifconfig命令结果中的1-255之间的整数;

[root@shell ~]# ifconfig | egrep -o -w "[1-9]{1}|([1-9]{1}[0-9]{1})|[1-2]{1}([0-9]{1,2})" | awk '{printf "%s ",$0} END {print ""}'
192 168 110 132 255 255 255 192 168 110 255 64 29 78 73 5 3 73 127 1 255 1 128 17 1 9 17 1 9

7、显示/var/log/secure文件中包含“Failed”或“FAILED”的行

[root@shell ~]# egrep "(Failed|FAILED)" /var/log/secure
[root@shell ~]# grep -i "Failed" /var/log/secure

8、在/etc/passwd中取出默认shell为bash

[root@shell ~]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
kxy:x:1000:1000:kxy:/home/kxy:/bin/bash
fox:x:1001:1001::/home/fox:/bin/bash

9、以长格式列出/etc/目录下以ns开头、.conf结尾的文件信息

[root@shell ~]# ll /etc/ | grep '^.*/ns.*\.conf$'
lrwxrwxrwx.  1 root root        29 Sep 17 21:55 nsswitch.conf -> /etc/authselect/nsswitch.conf
[root@shell ~]# ll /etc/ns*.conf
lrwxrwxrwx. 1 root root 29 Sep 17 21:55 /etc/nsswitch.conf -> /etc/authselect/nsswitch.conf

10、高亮显示passwd文件中冒号,及其两侧的字符

[root@shell ~]# grep -o ".:." /etc/passwd

11、匹配/etc/services中开头结尾字母一样的单词

[root@shell ~]# egrep -o -w "([a-z])[a-z]+\1" /etc/services

12.file.txt文件内容:

[root@shell ~]# cat file.txt
48        Dec      3BC1977 LPSX   68.00   LVX2A    138
483      Sept     5AP1996 USP     65.00   LVX2C   189
47        Oct      3ZL1998 LPSX    43.00   KVM9D   512
219      dec      2CC1999 CAD    23.00   PLV2C     68
484      nov      7PL1996 CAD     49.00   PLV2C     234
483      may     5PA1998 USP     37.00   KVM9D    644
216      sept     3ZL1998 USP     86.00   KVM9E    234

(1)含有“48”字符串的行的总数

[root@shell ~]# grep -c "48" file.txt

(2)显示含有“48”字符串的所有行的行号

[root@shell ~]# grep -n "48" file.txt 

(3)精确匹配只含有“48字符串的行

[root@shell ~]# grep -w "48" file.txt 

(4)抽取代码为484和483的城市位置

[root@shell ~]# grep "^48[34]" file.txt

[root@shell ~]# egrep "^48(3|4)" file.txt

(5)显示行首不是4或8

[root@shell ~]# grep "^[^48]" file.txt

(6)显示含有九月份(Sept)的行

[root@shell ~]# grep -i "Sept" file.txt

(7)显示以K开头,以D结尾的所有代码

[root@shell ~]# grep  "K.*D" file.txt

(8)显示头两个是大写字母,中间至少两个任意,并以C结尾的代码

[root@shell ~]# egrep '\b[A-Z]{2}.{2,}C\b' file.txt 
483     Sept    5AP1996 USP    65.00   LVX2C   189
219     dec     2CC1999 CAD    23.00   PLV2C   68
484     nov     7PL1996 CAD    49.00   PLV2C   234

(9)查询所有以5开始以1996或1998结尾的所有记录 

[root@shell ~]# egrep  "5.*199(6|8)" file.txt

13、显示/etc/passwd文件中以bash结尾的行;

[root@shell ~]# grep 'bash$' /etc/passwd
root:x:0:0:root:/root:/bin/bash
kxy:x:1000:1000:kxy:/home/kxy:/bin/bash
fox:x:1001:1001::/home/fox:/bin/bash

14、找出/etc/passwd文件中的三位或四位数;

[root@shell ~]# egrep -o "[[:digit:]]{3,4}" /etc/passwd

100
6553
6553

......

1001
977
977

这里太多了,可以使用awk再做处理,用printf格式化输出

[root@shell ~]# egrep -o "[[:digit:]]{3,4}" /etc/passwd | awk '{ printf "%s ", $0 } END { print "" }'
100 6553 6553 999 997 998 996 997 993 996 992 172 172 995 991 994 990 993 989 992 988 991 986 990 985 989 984 988 983 987 982 986 981 985 980 978 978 1000 1000 1001 1001 977 977 

这里解释一下吧!

printf "%s "注意%s后有个空格,$0为awk的内置变量,表示当前行的全部内容,这里使用格式化输出printf取消换行符并用空格隔开,END为awk的动作,这里为再结尾打印一个空行,实质上就是一个换行符

15、找出/etc/grub2.cfg文件中,以至少一个空白字符开头,后面又跟了非空白字符的行

[root@shell ~]# egrep "^[[:space:]]+[^[:space:]]*" /etc/grub2.cfg 
  load_env -f ${config_directory}/grubenv
  load_env
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
   set default="${saved_entry}"

......

 source ${config_directory}/custom.cfg
  source $prefix/custom.cfg

16、找出"netstat  -tan”命令的结果中,以‘LISTEN’后跟0或多个空白字符结尾的行;

[root@shell ~]# netstat -tan | egrep "LISTEN[[:space:]]*$"
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631        0.0.0.0:*               LISTEN     
tcp6      0      0 :::22                       :::*                        LISTEN     
tcp6      0      0 ::1:631                   :::*                        LISTEN 

17、找出"fdisk  -l“命令的结果中,包含以/dev/后跟sd或hd及一个字母的行;

[root@shell ~]# fdisk -l | egrep "/dev/(sd|hd)[[:alpha:]]"   #这里没有结果

18、找出”ldd  /usr/bin/cat“命令的结果中文件路径;

[root@shell ~]# ldd /usr/bin/cat
        linux-vdso.so.1 (0x00007fff8df01000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f3f05dec000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3f0600b000)

[root@shell ~]# ldd /usr/bin/cat | grep -o "/[^ ]*"
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2

19、找出/proc/meminfo文件中,所有以大写或小写s开头的行;至少用三种方式实现;

[root@shell ~]# egrep "^(S|s)" /proc/meminfo

[root@shell ~]# grep -i "^s" /proc/meminfo

[root@shell ~]# egrep  "^[sS]" /proc/meminfo

20、显示当前系统上root、apache或nginx用户的相关信息;

[root@shell ~]# egrep "^(root|apache|nginx)" /etc/passwd
root:x:0:0:root:/root:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
nginx:x:977:977:Nginx web server:/var/lib/nginx:/sbin/nologin

21、echo输出一个绝对路径,使用egrep取出其基名;

[root@shell ~]# echo "/var/www/html/index.html" | egrep -o [^/]+$     # [^/]表示不包含/
index.html

22、找出ifconfig命令结果中的1-255之间的整数;

[root@shell ~]# ifconfig | egrep -o -w "[1-9]{1}|([1-9]{1}[0-9]{1})|[1-2]{1}([0-9]{1,2})" | awk '{printf "%s ",$0} END {print ""}'
192 168 110 132 255 255 255 192 168 110 255 64 29 78 73 5 3 73 127 1 255 1 128 17 1 9 17 1 9

23、找出系统中其用户名与shell名相同的用户。

[root@shell ~]# egrep "^(.+):.*\1$" /etc/passwd | cut -d: -f1
sync
shutdown
halt

[root@shell ~]# egrep "^(sync|shutdown|halt)" /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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/232377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows10 固定电脑IP地址操作说明

windows10 固定电脑IP地址操作说明 一、无线网络的IP地址设置方法二、有线网络的IP地址设置方法 本文主要介绍,windows10操作系统下,不同的网络类型,对应的电脑IP地址设置方法。 一、无线网络的IP地址设置方法 在桌面右下角,点击…

A01、深入了解性能优化

1、常用性能评价/测试指标 1.1、响应时间 提交请求和返回该请求的响应时间之间使用的时间,一般比较关注平均响应时间。常用操作的响应时间列表: 操作响应时间打开一个站点几秒数据库查询一条记录(有索引)十几毫秒机械磁盘一次寻…

2023年超声波清洗机实测!清洁力强的超声波清洗机到底如何选择?

超声波清洗机对眼镜党来说是再熟悉不过的一款清洁设备,每次眼镜只要脏了就会第一时间想到拿去眼镜店去清洗,眼镜店老板数分钟就给自己解决了,不需要自己动手去清洗。随着科技的发展,超声波清洗机已经开始慢慢衍生到家里也能看到它…

vs code(Visual Studio Code)使用Remote SSH插件连接不上,反复输入密码

使用Remote SSH插件连接不上,反复输入密码问题解决分为两步 1,点击此处 可以得到配置文件的存放目录,进入硬盘这个目录 打开这个文件,知道你服务器的所在行ip,整行删掉,尝试再次连接 2,如果1不…

【DOM笔记二】操作元素(修改元素内容,修改常见元素/表单元素/元素样式属性,排他思想,自定义属性操作,应用案例!)

文章目录 4 操作元素4.1 修改元素的内容4.2 修改常见元素的属性案例:分时问候 4.3 修改表单元素属性案例:登录时隐藏/显示密码 4.4 修改元素样式属性4.4.1 行内样式操作 element.style案例1:关闭二维码广告案例2:遍历精灵图案例3&…

python之pyQt5实例:二维码生成与读取

目录 1、显示逻辑 2、业务逻辑 二维码的产生历史可以追溯到20世纪80年代。当时,日本Denso Wave公司为了追踪汽车零部件的运输和销售情况,开发了一种能够存储大量信息的条形码,这就是二维码的前身。到了20世纪90年代,随着手机和照…

深入探索Qt 6.3:全面了解新特性及应用技巧

学习目标: 帮助读者深入了解Qt 6.3的新特性,并提供相关应用技巧,以帮助他们更好地应用Qt 6.3进行开发 学习内容: Qt 6.3的新特性概述:介绍Qt 6.3相对于之前版本的改进和新增的功能,如模块的增减、性能优化…

WarAgent使用多智能体理解人类历史和预防未来国际冲突

我们能否避免历史十字路口上的战争?这个问题已经被个人、学者、政策制定者和组织在人类历史中追寻了很长时间。在这项研究中,我们尝试根据人工智能(AI)和大型语言模型(LLM)的最新进展来回答这个问题。 本文…

【C语言】自定义类型:结构体深入解析(一)

🌈write in front :🔍个人主页 : 啊森要自信的主页 ✏️真正相信奇迹的家伙,本身和奇迹一样了不起啊! 欢迎大家关注🔍点赞👍收藏⭐️留言📝>希望看完我的文章对你有小小的帮助&am…

微博被封禁如何解决

1.电脑搜索互联网信息投诉平台,点击我要投诉 2.找到互联网企业,选择新浪微博 3.然后填写个人信息,这里正常填写就行 4.填写信息 5.截图 6.成功

响应式布局2:手写响应式导航栏(BootStrap实现以及原生实现)

1.响应式导航栏介绍 响应式导航栏是一种在不同设备和屏幕尺寸下自适应布局和显示的导航栏。它可以根据用户所使用的设备(如桌面电脑、平板电脑或手机)自动调整其外观和交互方式,以提供更好的用户体验。 pc端: 手机端&#xff1a…

嵌入式开发行业会不会也变成java行业?

今日话题,嵌入式开发行业会不会也变成java行业?关于嵌入式行业的未来,与一些人的担忧不同,它并不会内卷化,而是具有相对稳定性的领域。嵌入式开发在制造业等重要第二产业中扮演着关键角色,这些领域的稳定性…

ubuntu部署llama2-chinese

ubuntu上安装cuda见之前的blog,已安装cuda12,使用nvcc-V 下载llama2-chinese:GitHub - FlagAlpha/Llama2-Chinese: Llama中文社区,最好的中文Llama大模型,完全开源可商用 conda create -n llamachinese python3.10 pi…

C#二甲医院实验室信息系统源码

医院实验室信息系统简称(Hospitallaboratoryinformationsystem),也可以称作实验室(检验科)信息系统或者LIS系统。 LIS定义 其主要功能是将检验的实验仪器传出的检验数据经分析后,自动生成打印报告,通过网络存储在数据…

当我分别问8款GPT一个问题。。。

前两天下班在地铁上无聊寻思问一下不同的GPT一个相同的问题,哪个会给出我比较满意的答案,然后我就提问:我老妹有点憨怎么办?(ps:开玩笑的,嘻嘻。。。) 很明显其他GPT都给出了大差不差…

Java的数据类型

文章目录 整形浮点型字符型布尔型基本数据类型转换自动类型转换自动类型转换注意和细节强制类型转换强制类型转换细节说明 整形 浮点型 字符型 字符型使用细节 布尔型 基本数据类型转换 自动类型转换 自动类型转换注意和细节 强制类型转换 自动类型转换的逆过程&#x…

金三银四精选面试题系列

Java中有哪几种方式来创建线程执行任务? 1. 继承Thread类 public class ZhouyuThread extends Thread{public static void main(String[] args) {ZhouyuThread thread new ZhouyuThread();thread.start();}Overridepublic void run() {System.out.println("h…

Mistral AI CEO宣布于2024年开源GPT-4级别模型

法国初创公司Mistral AI的首席执行官Arthur Mensch在法国国家广播电台宣布,公司计划于2024年开源GPT-4级模型,引发了业界的关注。 最近,Mistral AI推出了基于MoE架构的8X7B模型,与GPT3.5和Llama270B等其他流行模型相媲美&#xf…

leetcode --- 30. 串联所有单词的子串[C++ 滑动窗口/双指针]

原题:30. 串联所有单词的子串 - 力扣(LeetCode) 题目解析: 本题在这道题的算法原理基础上进行思考会简单许多 leetcode --- 438. 找到字符串中所有字母异位词[C/滑动窗口哈希表]-CSDN博客 关键信息---words中的字符串长度都相等 …

二叉树【数据结构】

目录 二叉树1. 二叉树定义二叉树的存储定义 2. 遍历二叉树(1) 前序遍历(2) 中序遍历(3) 后序遍历(4) 层序遍历 3. 二叉树的相关操作(1) 二叉树的初始化(2) 二叉树的结点的手动创建(3) 二叉树结点的个数(4) 二叉树叶子结点的个数(5) 二叉树的高度(6) 第k层结点个数(7) 通过前序遍…