当你从不止一个的文件中搜索时,默认它将显示文件名:
代码如下:
grep
"word"
文件名
grep
root
/etc/*
示例输出:
代码如下:
/etc/bash.bashrc:
See
"man
sudo_root"
for
details.
/etc/crontab:17
*
*
*
*
root
cd
/
&&
run-parts
--report
/etc/cron.hourly
/etc/crontab:25
6
*
*
*
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.daily
)
/etc/crontab:47
6
*
*
7
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.weekly
)
/etc/crontab:52
6
1
*
*
root
test
-x
/usr/sbin/anacron
||
(
cd
/
&&
run-parts
--report
/etc/cron.monthly
)
/etc/group:root:x:0:
grep:
/etc/gshadow:
Permission
denied
/etc/logrotate.conf:
create
0664
root
utmp
/etc/logrotate.conf:
create
0660
root
utmp
每行开始的第一个部分是文件名(如:/etc/crontab、/etc/group)。使用
-l
选项可以只显示文件名:
代码如下:
grep
-l
"string"
filename
grep
-l
root
/etc/*
示例输出:
代码如下:
/etc/aliases
/etc/arpwatch.conf
grep:
/etc/at.deny:
Permission
denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group
你也可以逆转输出使用
-L
选项来输出那些不匹配的文件的文件名:
代码如下:
grep
-L
"word"
filename
grep
-L
root
/etc/*
示例输出:
代码如下:
/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key
根据文件内容查找文件
输入以下命令:
代码如下:
grep
'string'
*.txt
grep
'main('
*.c
grep
'#include'
*.c
grep
'getChar*'
*.c
grep
-i
'ultra'
*.conf
grep
-iR
'ultra'
*.conf
其中
-i
:
忽略模式(匹配字符串
valid、
VALID、
ValID
)和输入文件(匹配
file.c
FILE.c
FILE.C)的大小写。
-R
:
递归读取每个目录下的所有文件。
高亮匹配到的模式
在搜索大量文件的时候你可以轻松地高亮模式:
代码如下:
$
grep
--color=auto
-iR
'getChar()'
*.c
为查找到的模式显示文件名和行号
你也许需要显示文件名和行号:
代码如下:
$
grep
--color=auto
-iRnH
'getChar()'
*.c
其中,
-n
:
在输出的每行前面添加以
1
开始的行号。
-H
:
为每个匹配打印文件名。要搜索多个文件时这是默认选项。(LCTT
译注:-h
选项强制隐藏文件名另外
-l
和
-L
选项用于仅显示匹配/不匹配的文件名,而
-H
和
-h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
代码如下:
$grep
--color=auto
-nH
'DIR'
*
输出样例:
你也可以使用
find
命令:
代码如下:
$
find
.
-name
"*.c"
|
xargs
grep
"main("
grep(global search regular expression(RE)and print out the line 即:全面搜索正则表达式并把行打印出来)命令是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep [option] pattern file
-a:不要忽略二进制数据
-A<n>:除了显示匹配的行外,还显示之后的n行
-b:在符合条件的行之前,显示该行第一个字符的编号
-B<n>:除了显示符合条件的行外,还显示之前的n行
-c:计算符合条件的列数
-C<n>:除了显示符合条件的行外,显示该行之前和之后各n行
-H:显示匹配行所属文件名
-i:不区别大小写
-n:列出符合条件的行,并显示行号
-r:查询文件夹的内容
-x:只显示全行符合的行
-o:只显示匹配到的内容
递归搜索
grep -r -n "ql2500" .
参考自 linux学习笔记24---命令grep
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)