第十七章:第23节Linux目录与文件——文件内容查找(grep命令、管道)

更新于:2019-10-13 14:57:59

我们查看一文件,想查看文件里有没有自己想要的信息,假如文件内容很多,使用查看命令挨个地查看,就太浪费时间。这时使用grep命令,就可以快速地知道有没有阅读者想要的信息,并快速找到它。


grep  被搜寻内容  文件


grep-指定文件中搜索指定字符内容。


演示:

grep ubuntu /etc/passwd


1.png


从/etc/passwd文件里搜索字符串“ubuntu”,如果有就把整行内容显示。


说几个参数:


-v 显示不包含匹配文本的所有行,意思取反值。

-n 显示匹配行及行号

-l  只显示文件名

1.png

-i 忽略大小写

-r 检索指定路径下所有文件,递归查找子目录

1.png


grep -rl 等于grep也有文件查找功能,根据文件内容查找文件。


grep的模糊查询


grep '^a ' stdio.h

在stdio.h文件中查找以a开头的行


grep 'a$' stdio.h

在stdio.h文件中查找以a结尾的行


grep '^a.b ' stdio.h

在stdio.h文件中查找以a任意一个字符b开头的行


^、$、.和在正则表达式中意思一样


^  从行首开始匹配
$  至行尾
.   任意单个字符


拓展:


grep命令不光用来检索文件内容,grep通常配合“|(管道)”,检索各种信息列表。


系统常用命令:管道


定义:前一个命令的输出是后一个命令的输入。即一个命令的输出可以通过管道做为另一个命令的输入。


符号表示:”|”  竖线 


如何理解呢?举个简单例子


ls -l /etc | wc -l


① ls -l /etc:显示/etc目录下文件列表

② wc -l:查看一个文件的行数


这是由两个命令组成的一个大命令,命令①输出的信息没有直接打印出来,而是通过管道传给了命令②。


本来命令②正确的写法应该是:

wc -l filename

从指定文件中获取处理的信息。有了管道帮助,wc命令可从管道中获取处理的信息。


1.png


/etc下是不是共有187个文件和目录,可以用WinSCP查看下:

1.png


看来是正确的。


再做个grep和|的演示:


1.png


以前我们罗列/etc目录的文件时,显示187个,找某些文件特别费劲,通过这两节课内容,我们可使用这两个命令快速找到某个文件:

find /etc -name '*关键字*' -ls
ls -l /etc | grep 关键字


注:命令中使用管道次数不限制,比如:

cat passwd | grep root | wc

cat命令的输出作为grep的输入进行查找root

grep命令的输出又作为wc的输入统计行数


注:管道它是Linux七种文件类型之一,用“p”表示,这类文件多用于进程间的通信方面。


1.png