1. grep命令
grep命令能够在一个或多个文件中,搜索某一特定的字符模式(也就是正则表达式),此模式可以
是单一的字符、字符串、单词或句子。
注意:在基本正则表达式中,如通配符 *、+、{、|、( 和 )等,已经失去了它们原本的含义,而若
要恢复它们原本的含义,则要在之前添加反斜杠 \,如 \*、\+、\{、\|、\( 和 \)。
grep 命令是用来在每一个文件或中(或特定输出上)搜索特定的模式,当使用 grep 时,包含指定
字符模式的每一行内容,都会被打印(显示)到屏幕上,但是使用 grep 命令并不改变文件中的内
容。
格式:[root@localhost ~]# grep [选项] 模式 文件名
选项包括:
模式:要么是字符(串),要么是正则表达式。
注意:如果是搜索多个文件,grep 命令的搜索结果只显示文件中发现匹配模式的文件名;而如果
搜索单个文件,grep 命令的结果将显示每一个包含匹配模式的行。
假设有一份 emp.data 员工清单:
#搜索此文件,找出职位为 CLERK 的所有员
[root@localhost ~]# grep CLERK emp.data
#只想知道职位为 CLERK 的员工的人数,可以使用“-c”选项
[root@localhost ~]# grep -c CLERK emp.data
#使用正则表达式找出以 78 开头的数据行
[root@localhost ~]# grep ^78 emp.data
2. wc命令
wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件
名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
wc [选项] Linux路径
选项:
[root@localhost ~]$ cat testfile
Linux networks are becoming more and more common, but scurity is often an overlooked
issue. Unfortunately, in today’s environment all networks are potential hacker targets,
fro0m tp-secret military research networks to small home LANs.
Linux Network Securty focuses on securing Linux in a networked environment, where the
security of the entire network needs to be considered rather than just isolated machines.
It uses a mix of theory and practicl techniques to teach administrators how to install and
use security applications, as well as how the applcations work and why they are necesary.
[root@localhost ~]$ wc testfile # testfile文件的统计信息
3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598
[root@localhost ~]$wc testfile testfile_1 testfile_2
#统计三个文件的信息
[root@localhost ~]$ wc testfile testfile_1 testfile_2
#统计三个文件的信息
3 92 598 testfile
#第一个文件行数为3、单词数92、字节数598
9 18 78 testfile_1
#第二个文件的行数为9、单词数18、字节数78
3 6 32 testfile_2
#第三个文件的行数为3、单词数6、字节数32
15 116 708 总用量
#三个文件总共的行数为15、单词数116、字节数708
3. 管道符 |
管道符的含义是:将管道符左边命令的结果,作为右边命令的输入
cat、sort、uniq、grep等命令均支持管道符,是因为这些命令均可从标准输入中读取要处理的文本
(即从标准输入中读取参数);而对于部分命令,例如rm、kill等命令则不支持从标准输入中读取
参数,只支持从命令行中读取参数(即rm命令后面必须指定删除的文件或者目录,kill命令后面必
须要指定杀死的进程号等)。
sort后面没有参数时,则对管道符丢给它的前一个命令的输出结果进行处理(即前一个命令的标准
输出作为本次命令的标准输入)。
当rm后面不指定删除的文件时,则会报错丢失参数,所以,rm等命令不支持从标准输入读取参
数,只支持在命令行指定参数,即指定删除的文件。
[root@localhost ~]$ ls | grep Desktop
--过滤ls的结果
[root@localhost ~]$ find / -name “test” | grep “/usr/lib64”
--过滤结果,只找路径带有/usr/lib64的结果
[root@localhost ~]$ cat a.txt | grep bbb | grep ccc
--可以嵌套使用
--cat a.txt的结果给 grep bbb 使用
--cat a.txt | grep bbb 的结果给 grep ccc使用
[root@localhost ~]$ cat hello.sh | sort | uniq | grep 'better’
--首先使用cat命令查看文本,打印到屏幕上内容即为cat命令的输出结果
--将前面cat命令输出的结果通过管道丢给sort命令,所以sort命令是对前面cat命令输出的文本进行排序
--sort跟uniq结合使用才能有效去重,所以通过管道将sort处理后输出的文本丢给uniq处理,
--所以uniq处理的是排序好的文本,可以进行有效去重
--最后一步过滤则同样是将前面命令即uniq命令处理后输出的文本进行过滤