『忘了再学』Shell基础 — 8、管道符介绍
2022/4/8 7:19:23
本文主要是介绍『忘了再学』Shell基础 — 8、管道符介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1、行提取命令grep
- 2、find和grep的区别
- 3、管道符
- 4、通配符
我们之前已经有文章说过管道符了,今天这里再简单总结一下用法。
1、行提取命令grep
grep
命令的作用,是在指定的文件中,搜索符合条件的字符串。
命令格式:
[root@localhost ~ ] # grep [选项] ”搜索内容” 文件名
选项:
-A 数字
:列出符合条件的行,并列出后续的n行。-B 数字
:列出符合条件的行,并列出前面的n行。-c
:统计找到的符合条件的字符串的次数。-i
:忽略大小写。-n
:输出行号。-v
:反向查找。--color=auto
:搜索出的关键字用颜色显示。
示例:
- 例子1:查找用户信息文件
/etc/passwd
中,有多少可以登录的用户。[root@localhost ~]# grep "/bin/bash" /etc/passwd
- 例子2:查找用户信息文件
/etc/passwd
中,包含有root
的行,并列出后续的3行。[root@localhost ~]# grep -A 3 "root" /etc/passwd
- 例子3:查找用户信息文件
/etc/passwd
中,可以登录的用户,并显示行号。[root@localhost ~]# grep -n "/bin/bash" /etc/passwd
- 例子4:查找用户信息文件
/etc/passwd
中,不含有/bin/bash
的行,其实就是列出所有的伪用户。[root@localhost ~]# grep -v "/bin/bash" /etc/passwd
2、find和grep的区别
find
命令是在系统当中搜索符合条件的文件名,搜索时文件名是完全匹配。如果需要模糊查询,使用通配符进行匹配。
#建立文件abc [root@localhost ~ ] # touch abc #建立文件abcd [root@localhost ~ ] # touch abcd #查找abc文件 [root@localhost ~ ] # find . -name ”abc" ./abc
搜索文件名是abc
的文件,只会找到abc
文件,而不会找到文件abcd
。虽然abed
文件名中包含abc
,但是find
命令是完全匹配,只能和要搜索的数据完全一样,才能找到。
注意:
find
命令是可以通过-regex
选项识别正则表达式规则的,也就是说find
命令可以按照正则表达式规则匹配,而正则表达式是模糊匹配。但是对于初学者而言,find
命令和grep
命令本身就不好理解,所以我们这里只按照通配符规则来进行find
查询。
grep
命令是在文件当中搜索符合条件的字符串,如果需要模糊查询,使用正则表达式进行匹配,搜索时字符串是包含匹配。
#在test文件中写入abc数据 [root@localhost ~ ] # echo abc > test #在test文件中再追加abcd数据 [root@localhost ~]#echo abcd >> test #在test文件中查找abc字符串 [root@localhost ~]#grep”abc" test abc abcd
grep
命令查找时,只要数据行中包含有abc
,就会都列出,所以abc
和abed
都可以查询到。
3、管道符
管道符之前总结过,请看之前的文章:https://www.cnblogs.com/liuyuelinfighting/p/15530010.html。
我们下面简单的做几个练习:
- 练习1:
查询本地所有网络连接,提取包含ESTABLISHED(已建立连接)的行,就可以知道我们的服务器上有多少已经成功连接的网络连接。[root@localhost ~]# netstat -an | grep "ESTABLISHED"
- 练习2:
如果想知道具体的网络连接数量,就可以再使用wc
命令统计行数。[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l
4、通配符
通配符是用来匹配文件名的,文件名在查询的时候是完全匹配的,必须一模一样才会查询出,否则就要加通配符,进行模糊查询。
练习:
# 创建4个测试文件 [root@localhost tmp]# touch abc [root@localhost tmp]# touch abcd [root@localhost tmp]# touch 012 [root@localhost tmp]# touch 0abc # “*”代表查找所有的文件 [root@localhost tmp]# ls * 012 0abc abc abcd # “?"匹配任意一个字符,所以会匹配0abc #但是不能匹配abc,因为“?”"不能匹配空 [root@localhost tmp]# ls ?abc 0abc # 匹配任何以数字开头的文件 [root@localhost tmp]# ls [0-9]* 012 0abc # 匹配不已数字开头的文件 [root@localhost tmp]# ls [^0-9]* abc abed
这篇关于『忘了再学』Shell基础 — 8、管道符介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南