前言
有时候在Linux的命令行里,需要在一堆文本文件中查找特定的关键字。一个一个文件打开找很麻烦的,有时候在Linux找到了日志log文件,只想查看含有某字符的某些行,但是如果日志太大,如果打开找会很麻烦,这里介绍一个在路径下或文件夹下查找含有关键字的文件,还有查看某文本文件里查找含有特定的关键字的前后几行的命令。
测试的文件夹内容如下所示
在/home/lwq/andrew里,有a.txt, b.txt, c.txt
1.在路径下查找含有关键字的文件
find path -name 'file_name' | xargs grep 'key_words'
1.1.比如在/home/lwq/andrew文件夹下查找 ‘a.txt’ 文本文件里的关键字 ‘apple3’ ,就输入命令
find /home/lwq/andrew -name 'a.txt' | xargs grep 'apple3'
1.2.再比如要在/home/lwq/andrew目录下包括子目录查找所有文件中含有 ‘cherry2’,那就输入命令
find /home/lwq/andrew -name '*' | xargs grep 'cherry2'
2.查看某文本文件里查找含有特定的关键字的前后几行的命令
cat path+file_name | grep -A 3 'apple1'
2.1.显示a.txt文件里匹配apple1字串那行以及后3行
cat /home/lwq/andrew/a.txt | grep -A 3 'apple1'
2.2.显示a.txt文件里匹配apple5字串那行以及前3行
cat /home/lwq/andrew/a.txt | grep -B 3 'apple5'
2.3.显示a.txt文件里匹配apple3字串那行以及前后3行
cat /home/lwq/andrew/a.txt | grep -C 3 'apple3'