
Linux 系统下有许多强大的命令行工具,其中命令就是最常用的之一。它可以帮助用户在文件中快速搜索和匹配特定的文本模式。使用命令的基本语法如下:
grep [options] 'search_pattern' file_name
其中,表示可选的搜索参数,如忽略大小写,显示行号等。
search_pattern
就是要搜索的文本模式,可以使用正则表达式。则是待搜索的文件名。
有时我们需要在整个目录树中递归搜索关键字,这时可以使用命令与命令相结合:
find . -type f -print0 | xargs -0 grep -i 'keyword'
其中,表示从当前目录开始搜索,表示只搜索文件(不包括目录),和可以避免文件名中包含空格的问题。
grep -i 'keyword'
就是搜索关键字,并忽略大小写。
命令和递归搜索技巧是 Linux 用户必备的技能,可以大大提高工作效率。合理利用这些工具,可以帮助我们快速定位和处理各种文本数据。
linux中的grep怎么用~?
在Linux系统中,grep是一个强大的文本搜索工具,用于查找文件中包含特定模式的行。 例如,使用命令grep abc /Desktop/AA,可以在桌面上的AA文档中搜索包含abc的文本,并将包含abc的行全部显示出来。 AA文档必须是文本类型。 grep指令的基本语法是grep [选项] [模式] [文件]。 其中,[模式]可以是普通表达式、固定字符串列表或扩展的普通表达式。 [文件]是需要搜索的文件或目录。 如果省略[文件],则从标准输入设备读取数据。 常用的参数包括:-a或--text,不忽略二进制数据;-A或--after-context,除了显示匹配行之外,还显示其后的n行;-b或--byte-offset,在匹配行前标示其第一个字符的字节编号;-B或--before-context,除了显示匹配行之外,还显示其前的n行;-c或--count,统计匹配行数;-C或--context,除了显示匹配行之外,还显示其前后的n行。 -d或--directories,指定查找目录而非文件;-e或--regexp,指定字符串作为查找模式;-E或--extended-regexp,使用扩展的普通表示法;-f或--file,指定模式文件;-F或--fixed-regexp,将模式视为固定字符串列表;-G或--basic-regexp,使用基本的普通表示法。 -h或--no-filename,不显示文件名;-H或--with-filename,显示文件名;-i或--ignore-case,忽略大小写;-l或--file-with-matches,列出符合模式的文件名;-L或--files-without-match,列出不符合模式的文件名;-n或--line-number,显示行号;-q或--quiet或--silent,不显示任何信息;-r或--recursive,递归查找目录下的文件;-s或--no-messages,不显示错误信息;-v或--revert-match,反转匹配;-V或--version,显示版本信息;-w或--word-regexp,只显示全单词匹配的行;-x或--line-regexp,只显示全行匹配的行;-y,效果等同于指定-i参数。
Linux下Grep命令的详细使用方法?
在Linux中,grep命令是一个非常有用的工具,它与管道(|)结合使用,功能强大,主要用于搜索文本文件中的特定字符串。 假如你需要在一个目录下的多个文件中查找含有特定字符串的内容,可以使用grep命令。 例如,在/usr/src/linux/Documentation目录下查找包含“magic”字符串的文件,命令如下:
$ grep magic /usr/src/linux/Documentation/*
输出结果可能会显示类似这样的内容:
:* How do I enable the magic SysRQ key?
:* How do I use the magic SysRQ key?
其中,文件包含了该字符串,讨论的是SysRQ的功能。 默认情况下,grep命令仅搜索当前目录。 如果目录下有很多子目录,grep会以如下形式列出:
grep: sound: Is a directory
这会使grep的输出难以阅读。这里有两种解决办法:
明确要求搜索子目录:grep -r
忽略子目录:grep -d skip
当然,如果预料到有很多输出,可以通过管道将其转到less上阅读:
$ grep magic /usr/src/linux/Documentation/* | less
这样,就可以更方便地阅读输出内容。 需要注意的是,你必须提供一个文件过滤方式(搜索全部文件时使用*)。 如果你忘记提供,grep会一直等待,直到该程序被中断。 如果你遇到这种情况,可以按Ctrl+C中断,然后再试。
以下是一些有意思的命令行参数:
这里还有一些用于搜索的特殊符号:
如果你不习惯命令行参数,可以尝试使用图形界面的grep,如reXgrep。 这个软件提供了AND、OR、NOT等语法,还有漂亮的按钮。 如果你想获得更清晰的输出,不妨试试fungrep。
Linux命令之grep命令使用介绍
1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用 正则表达式 搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2.格式grep [options]
3.主要参数[options]主要参数:-c:只输出匹配行的计数。 -I:不区分大 小写(只适用于单字符)。 -h:查询多文件时不显示文件名。 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及 行号。 -s:不显示不存在或无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行。 pattern正则表达式主要参数:\: 忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始行。 $: 匹配正则表达式的结束行。 \<:从匹配正则表达 式的行开始。 \>:到匹配正则表达式的行结束。 [ ]:单个字符,如[A]即A符合要求 。 [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。 。 :所有的单个字符。 * :有字符,长度可以为0。
命令使用简单实例$ grep ‘test’ d*显示所有以d开头的文件中包含 test的行。 $ grep ‘test’ aa bb cc显示在aa,bb,cc文件中匹配test的行。 $ grep ‘[a-z]\{5\}’ aa显示所有包含每个字符串至少有5个连续小写字符的字符串的行。 $ grep ‘w\(es\)t.*\1′ aa如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。 如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。
命令使用复杂实例假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:$ grep magic /usr/src/Linux/Doc/*:* How do I enable the magic SysRQ key?:* How do I use the magic SysRQ key?其中文件’’包含该字符串,讨论的是 SysRQ 的功能。 默认情况下,’grep’只搜索当前目录。 如果 此目录下有许多子目录,’grep’会以如下形式列出:grep: sound: Is a directory这可能会使’grep’ 的输出难于阅读。 这里有两种解决的办法:明确要求搜索子目录:grep -r或忽略子目录:grep -d skip如果有很多 输出时,您可以通过管道将其转到’less’上阅读:$ grep magic /usr/src/Linux/Documentation/* | less这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。 如果您忘了,’grep’会一直等着,直到该程序被中断。 如果您遇到了这样的情况,按,然后再试。
下面还有一些有意思的命令行参数:grep -i pattern files :不区分大小写地搜索。 默认情况区分大小写,grep -l pattern files :只列出匹配的文件名,grep -L pattern files :列出不匹配的文件名,grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),grep -C number pattern files :匹配的上下文分别显示[number]行,grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
grep -n pattern files 即可显示行号信息
grep -c pattern files 即可查找总行数
这里还有些用于搜索的特殊符号:\ 和 \> 分别标注单词的开始与结尾。 例如:grep man * 会匹配 ‘Batman’、’manic’、’man’等,grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,grep ‘\’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。 ‘^’:指匹配的字符串在行首,‘$’:指匹配的字符串在行 尾,
Grep 命令 用法大全
1、 参数:-I :忽略大小写-c :打印匹配的行数-l :从多个文件中查找包含匹配项-v :查找不包含匹配项的行-n:打印包含匹配项的行和行标
2、RE(正则表达式)\ 忽略正则表达式中特殊字符的原有含义^ 匹配正则表达式的开始行$ 匹配正则表达式的结束行\< 从匹配正则表达式的行开始\> 到匹配正则表达式的行结束[ ] 单个字符;如[A] 即A符合要求[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求. 所有的单个字符* 所有字符,长度可以为0
3、举例# ps -ef | grep 181 0 13:43:53 ? 0:00
# more size文件的内容bbammaambabmBMBBADc2345
# more | grep [a-b] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求bbaaabab# more | grep [a-b]*bbammaambabmBMBBADc2345
# more | grep b 单个字符;如[A] 即A符合要求bbbb# more | grep [bB]bbbbBBBADc2345
# grep root /etc/grouproot::0:rootbin::2:root,bin,daemonsys::3:root,bin,sys,admadm::4:root,adm,daemonuucp::5:root,uucpmail::6:roottty::7:root,tty,admlp::8:root,lp,admnuucp::9:root,nuucpdaemon::12:root,daemon
# grep ^root /etc/group 匹配正则表达式的开始行root::0:root
# grep uucp /etc/groupuucp::5:root,uucpnuucp::9:root,nuucp
# grep \<uucp /etc/groupuucp::5:root,uucp
# grep root$ /etc/group 匹配正则表达式的结束行root::0:rootmail::6:root
# more | grep -i b1..*3 -i :忽略大小写
# more | grep -iv b1..*3 -v :查找不包含匹配项的行
bammaamabmBMBADc2345
# more | grep -in b1..*31:b:b:B
# grep $ /etc/init.d/ | wc -l128# grep \$ /etc/init.d/ | wc –l 忽略正则表达式中特殊字符的原有含义
15# grep \$ /etc/init.d/ $1 in>/tmp/sharetab.$$[ x$fstype != xnfs ] &&echo $path\t$res\t$fstype\t$opts\t$desc>>/tmp/sharetab.$$/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetabif [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v ^[ ]*(#|$)if [ $startnfsd -eq 0 -a -f /etc/ ] &&if [ $startnfsd -ne 0 ]; thenelif [ ! -n $_INIT_RUN_LEVEL ]; thenwhile [ $wtime -gt 0 ]; dowtime=`expr $wtime - 1`if [ $wtime -eq 0 ]; thenecho Usage: $0 { start | stop }
the test filetheir are filesThe end
# grep the test filetheir are files
# grep \<the test filetheir are files
# grep the\> test file
# grep \ test file
# grep \ test file
1,简介使用正则表达式的一个多用途文本搜索工具.这个php?name=%C3%FC%C1%EE>命令本来是ed行编辑器中的一个php?name=%C3%FC%C1%EE>命令/过滤器: g/re/p -- global - regular expression - print.基本格式grep pattern [file...](1)grep 搜索字符串 [filename](2)grep 正则表达式 [filename]在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号
2,grep的选项 -c 只输出匹配行的计数 -i 不区分大小写(用于单字符) -n 显示匹配的行号 -v 不显示不包含匹配文本的所以有行 -s 不显示错误信息 -E 使用扩展正则表达式 更多的选项请查看:man grep
3,常用grep实例
(1)多个文件查询 grep sort * #见文件名的匹配
(2)行匹配:输出匹配行的计数 grep -c 48 #输出文档中含有48字符的行数
(3)显示匹配行和行数 grep -n 48 #显示所有匹配48的行和行号
(4)显示非匹配的行 grep -vn 48 #输出所有不包含48的行
(4)显示非匹配的行 grep -vn 48 #输出所有不包含48的行
(5)大小写敏感 grep -i ab #输出所有含有ab或Ab的字符串的行
4, 正则表达式的应用
(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来) grep [239]. #输出所有含有以2,3或9开头的,并且是两个数字的行
(2)不匹配测试 grep ^[^48] #不匹配行首是48的行
(3)使用扩展模式匹配 grep -E 219|216
(4) ... 这需要在实践中不断应用和总结,熟练掌握正则表达式。
5, 使用类名可以使用国际模式匹配的类名:[[:upper:]] [A-Z][[:lower:]] [a-z][[:digit:]] [0-9][[:alnum:]] [0-9a-zA-Z][[:space:]] 空格或tab[[:alpha:]] [a-zA-Z]
(1)使用 grep 5[[:upper:]][[:upper:]] #查询以5开头以两个大写字母结尾的行
执行权限:所有用户
所在位置:/bin/grep
语 法:grep [options] pattern [file...]
功 能:在文件中搜索字符串匹配的行,并输出
选 项:invE
-n 输出行号
grep -n csdn 匹配含有csdn的行,并输出行号
-i 忽略大小写
grep -i csdn 匹配含有csdn(忽略这个字母的大小写)的行,并输出行号
-v 反向匹配
grep -v csdn 反向匹配,即匹配不含有csdn的行
-E 支持扩展的正则表达式
grep -E (ab)+ 匹配(ab)+扩展正则表达式,即ab、abab、ababab……