linux grep命令详解

linux grep命令详解简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

Unix的grep家族包括grep、egrep和fgrep。

egrep和fgrep的命令只跟grep有很小不同。

egrep是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。

linux 使用GNU版本的grep。

它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep常用用法[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到'搜寻字符串'的次数-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有'搜寻字符串'内容的那一行!--color=auto :可以将找到的关键词部分加上颜色的显示喔!将/etc/passwd,有出现root 的行取出来# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin或# cat /etc/passwd | grep rootroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin将/etc/passwd,有出现root 的行取出来,同时显示这些行在/etc/passwd的行号# grep -n root/etc/passwd1:root:x:0:0:root:/root:/bin/bash30:operator:x:11:0:operator:/roo t:/sbin/nologin在关键字的显示方面,grep 可以使用--color=auto 来将关键字部分使用颜色显示。

这可是个很不错的功能啊!但是如果每次使用grep 都得要自行加上--color=auto 又显的很麻烦~此时那个好用的alias 就得来处理一下啦!你可以在~/.bashrc 内加上这行:『alias grep='grep --color=auto'』再以『source ~/.bashrc 』来立即生效即可喔!这样每次运行grep 他都会自动帮你加上颜色显示啦将/etc/passwd,将没有出现root 的行取出来# grep -v root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin将/etc/passwd,将没有出现root 和nologin的行取出来# grep -v root /etc/passwd | grep -v nologinroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin用dmesg 列出核心信息,再以grep 找出内含eth 那行,要将捉到的关键字显色,且加上行号来表示:[root@www ~]# dmesg | grep -n --color=auto 'eth'247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10248:eth0: Identified 8139 chip type'RTL-8139C'294:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1305:eth0: no IPv6 routers present# 你会发现除了 eth 会有特殊颜色来表示之外,最前面还有行号喔!在关键字的显示方面,grep 可以使用--color=auto 来将关键字部分使用颜色显示。

这可是个很不错的功能啊!但是如果每次使用grep 都得要自行加上--color=auto 又显的很麻烦~此时那个好用的alias 就得来处理一下啦!你可以在~/.bashrc 内加上这行:『alias grep='grep--color=auto'』再以『source ~/.bashrc 』来立即生效即可喔!这样每次运行grep 他都会自动帮你加上颜色显示啦用dmesg 列出核心信息,再以grep 找出内含eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示[root@www ~]# dmesg | grep-n -A3 -B2 --color=auto 'eth'245-PCI: setting IRQ 10 as level-triggered246-ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link[LNKB] ...247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10248:eth0: Identified 8139 chip type 'RTL-8139C'249-input: PC Speaker as/class/input/input2250-ACPI: PCI Interrupt 0000:00:01.4[B] -> Link[LNKB] ...251-hdb: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(66)# 如上所示,你会发现关键字247所在的前两行及248后三行也都被显示出来!# 这样可以让你将关键字前后数据捉出来进行分析啦!根据文件内容递归查找目录# grep‘energywise’ * #在当前目录搜索带'energywise'行的文件# grep -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件# grep -l -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件这几个命令很使用,是查找文件的利器。

grep与正规表达式字符类字符类的搜索:如果我想要搜寻test 或taste 这两个单字时,可以发现到,其实她们有共通的't?st' 存在~这个时候,我可以这样来搜寻:[root@www ~]# grep-n 't[ae]st'regular_express.txt8:I can't finish the test.9:Oh! The soup taste good.其实[] 里面不论有几个字节,他都谨代表某『一个』字节,所以,上面的例子说明了,我需要的字串是『tast』或『test』两个字串而已!字符类的反向选择[^] :如果想要搜索到有oo 的行,但不想要oo 前面有g,如下[root@www ~]# grep -n '[^g]oo' regular_express.txt2:apple is my favorite food.3:Football game is not use feet only.18:google is the best tools for search keyword.19:goooooogle yes!第2,3 行没有疑问,因为foo 与Foo 均可被接受!但是第18 行明明有google 的goo 啊~别忘记了,因为该行后面出现了tool 的too 啊!所以该行也被列出来~也就是说,18 行里面虽然出现了我们所不要的项目(goo) 但是由於有需要的项目(too) ,因此,是符合字串搜寻的喔!至於第19 行,同样的,因为goooooogle 里面的oo 前面可能是o ,例如:go(ooo)oogle ,所以,这一行也是符合需求的!字符类的连续:再来,假设我oo 前面不想要有小写字节,所以,我可以这样写[^abcd....z]oo ,但是这样似乎不怎么方便,由於小写字节的ASCII 上编码的顺序是连续的,因此,我们可以将之简化为底下这样:[root@www ~]# grep -n '[^a-z]oo'regular_express.txt3:Football game is not use feet only.也就是说,当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等,就可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字串是数字与英文呢?呵呵!就将他全部写在一起,变成:[a-zA-Z0-9]。

我们要取得有数字的那一行,就这样:[root@www ~]# grep-n '[0-9]'regular_express.txt5:However, this dress is about $ 3183 dollars.15:You are the best is mean you are the no. 1.行首与行尾字节^ $行首字符:如果我想要让the 只在行首列出呢?这个时候就得要使用定位字节了!我们可以这样做:[root@www ~]# grep-n '^the'regular_express.txt12:the symbol '*'is represented as start.此时,就只剩下第12 行,因为只有第12 行的行首是the 开头啊~此外,如果我想要开头是小写字节的那一行就列出呢?可以这样:[root@www ~]# grep -n '^[a-z]' regular_express.txt2:apple is my favorite food.4:this dress doesn't fit me.10:motorcycle is cheap than car.12:the symbol '*' is represented as start.18:google is the best tools for searchkeyword.19:goooooogle yes!20:go! go! Let's go.如果我不想要开头是英文字母,则可以是这样:[root@www ~]# grep-n '^[^a-zA-Z]'regular_express.txt1:"Open Source"is a good mechanism to develop programs.21:# I am VBird^ 符号,在字符类符号(括号[])之内与之外是不同的!在[] 内代表『反向选择』,在[] 之外则代表定位在行首的意义!那如果我想要找出来,行尾结束为小数点(.) 的那一行:[root@www ~]# grep-n '\.$'regular_express.txt1:"Open Source"is a good mechanism to develop programs.2:apple is my favorite food.3:Football game is not use feet only.4:this dress doesn't fit me.10:motorcycle is cheap than car.11:This windowis clear.12:the symbol '*' is represented as start.15:You are the best is mean you are the no. 1.16:The world <Happy> is the same with "glad".17:I like dog.18:google is the best tools for search keyword.20:go! go! Let's go.特别注意到,因为小数点具有其他意义(底下会介绍),所以必须要使用转义字符(\)来加以解除其特殊意义!找出空白行:[root@www ~]# grep -n '^$' regular_express.txt22:因为只有行首跟行尾(^$),所以,这样就可以找出空白行啦!任意一个字节 . 与重复字节*这两个符号在正则表达式的意义如下:. (小数点):代表『一定有一个任意字节』的意思;* (星号):代表『重复前一个字符,0到无穷多次』的意思,为组合形态假设我需要找出g??d 的字串,亦即共有四个字节,起头是g 而结束是 d ,我可以这样做:[root@www ~]# grep -n 'g..d' regular_express.txt1:"Open Source" is a good mechanism to develop programs.9:Oh! The soup taste good.16:The world <Happy> is the same with "glad".因为强调g 与 d 之间一定要存在两个字节,因此,第13 行的god 与第14 行的gd 就不会被列出来啦!如果我想要列出有oo, ooo, oooo 等等的数据,也就是说,至少要有两个(含) o 以上,该如何是好?因为* 代表的是『重复0 个或多个前面的RE 字符』的意义,因此,『o*』代表的是:『拥有空字节或一个o 以上的字节』,因此,『grep -n 'o*' regular_express.txt 』将会把所有的数据都列印出来终端上!当我们需要『至少两个o 以上的字串』时,就需要ooo* ,亦即是:[root@www ~]# grep -n 'ooo*' regular_express.txt1:"Open Source" is a good mechanism to develop programs.2:apple is my favorite food.3:Football game is not use feet only.9:Oh! The soup taste good.18:google is the best tools for search keyword.19:goooooogle yes!如果我想要字串开头与结尾都是g,但是两个g 之间仅能存在至少一个o ,亦即是gog, goog, gooog.... 等等,那该如何?[root@www ~]# grep-n 'goo*g'regular_express.txt18:google is the best tools for search keyword.19:goooooogle yes!如果我想要找出g 开头与g 结尾的行,当中的字符可有可无[root@www ~]# grep -n 'g.*g' regular_express.txt1:"Open Source" is a good mechanism to develop programs.14:The gd software is a library for drafting programs.18:google is the best tools for search keyword.19:goooooogle yes!20:go! go! Let's go.因为是代表g 开头与g 结尾,中间任意字节均可接受,所以,第1, 14, 20 行是可接受的喔!这个 .* 的RE 表示任意字符是很常见的.如果我想要找出『任意数字』的行?因为仅有数字,所以就成为:[root@www ~]# grep-n '[0-9][0-9]*'regular_express.txt5:However, this dress is about $ 3183 dollars.15:You are the best is mean you are the no. 1.限定连续RE 字符范围{}我们可以利用 . 与RE 字符及* 来配置0 个到无限多个重复字节,那如果我想要限制一个范围区间内的重复字节数呢?举例来说,我想要找出两个到五个o 的连续字串,该如何作?这时候就得要使用到限定范围的字符{} 了。

合集下载

linux中grep命令用法

linux中grep命令用法

linux中grep命令用法在Linux系统中,grep是一种强大的文本搜索工具,它用于在文件中查找指定的字符串或者模式。

grep命令可用于从单个文件、多个文件以及文件夹中搜索文本。

本文将介绍grep的基本用法以及一些常用选项。

一、基本用法1. grep字符串文件名:该命令用于在指定文件中搜索包含指定字符串的行,并将这些行输出到屏幕上。

例如,要在file.txt文件中查找包含字符串"hello"的行,可以使用以下命令:grep "hello" file.txt2. grep -r字符串目录:该命令用于在指定目录及其子目录中搜索包含指定字符串的文件。

例如,要在当前目录下的所有文件中查找包含字符串"world"的文件,可以使用以下命令:grep -r "world" .3. grep -n字符串文件名:该命令用于在指定文件中搜索包含指定字符串的行,并显示行号。

例如,要在file.txt文件中查找包含字符串"apple"的行,并显示行号,可以使用以下命令:4. grep -i字符串文件名:该命令用于在指定文件中搜索包含指定字符串的行,并忽略字符串的大小写。

例如,要在file.txt文件中查找包含字符串"Linux"的行,不区分大小写,可以使用以下命令:grep -i "Linux" file.txt二、常用选项1. -v选项:该选项用于反转搜索结果,即只输出不包含指定字符串的行。

例如,要在file.txt文件中查找不包含字符串"error"的行,可以使用以下命令:grep -v "error" file.txt2. -l选项:该选项用于只输出包含指定字符串的文件名,而不显示具体匹配的行。

例如,要在当前目录及其子目录中查找包含字符串"success"的文件名称,可以使用以下命令:grep -l "success" .3. -c选项:该选项用于输出匹配指定字符串的行数。

Linux命令行神器使用grep命令进行文本搜索和过滤

Linux命令行神器使用grep命令进行文本搜索和过滤

Linux命令行神器使用grep命令进行文本搜索和过滤Linux命令行神器:使用grep命令进行文本搜索和过滤Linux操作系统以其高度的定制性和灵活性而闻名,而命令行是管理和操作Linux系统的重要组成部分。

grep命令是其中一种功能强大的命令行工具,用于在文本中搜索和过滤内容。

本文将介绍grep命令的基本用法、参数详解以及实际应用案例。

一、grep命令基本用法grep命令可以在文本文件中按照指定的模式搜索内容,并将匹配到的行输出到终端。

其基本命令格式如下:grep [options] pattern [file...]其中,pattern表示待搜索的模式,可以是字符串、正则表达式或者文件。

file是待搜索的文件名,可以指定多个文件进行搜索。

以下是一些常用的grep命令选项:1. -i:忽略大小写进行匹配;2. -v:输出不匹配的行;3. -r:递归搜索子目录下的文件;4. -w:仅匹配整个单词,而非部分匹配;5. -n:显示匹配行的行号。

二、grep命令参数详解1. 忽略大小写匹配grep -i "pattern" file使用"-i"选项可以实现忽略大小写进行匹配。

例如,我们要在一个文件中搜索关键词"Linux",不论大小写,可以使用如下命令:grep -i "linux" file2. 输出不匹配的行grep -v "pattern" file使用"-v"选项可以使grep命令输出不匹配指定模式的行。

这对于筛选出不需要的内容非常有用。

例如,我们要排除包含关键词"ignore"的行,可以使用如下命令:grep -v "ignore" file3. 递归搜索子目录下的文件grep -r "pattern" directory使用"-r"选项可以递归搜索指定目录及其子目录下的文件。

linuxgrep命令详解

linuxgrep命令详解

linuxgrep命令详解简介grep (global search regular expression(RE) and print out the line,全⾯搜索正则表达式并把⾏打印出来)是⼀种强⼤的⽂本搜索⼯具,它能使⽤正则表达式搜索⽂本,并把匹配的⾏打印出来。

Unix的grep家族包括grep、egrep和fgrep。

egrep和fgrep的命令只跟grep有很⼩不同。

egrep是grep的扩展,⽀持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表⽰回其⾃⾝的字⾯意义,不再特殊。

linux使⽤GNU版本的grep。

它功能更强,可以通过-G、-E、-F命令⾏选项来使⽤egrep和fgrep的功能。

grep常⽤⽤法[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary ⽂件以 text ⽂件的⽅式搜寻数据-c :计算找到 '搜寻字符串' 的次数-i :忽略⼤⼩写的不同,所以⼤⼩写视为相同-n :顺便输出⾏号-v :反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏!--color=auto :可以将找到的关键词部分加上颜⾊的显⽰喔!将/etc/passwd,有出现 root 的⾏取出来# grep root /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin或# cat /etc/passwd | grep rootroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin将/etc/passwd,有出现 root 的⾏取出来,同时显⽰这些⾏在/etc/passwd的⾏号# grep -n root /etc/passwd1:root:x:0:0:root:/root:/bin/bash30:operator:x:11:0:operator:/root:/sbin/nologin在关键字的显⽰⽅⾯,grep 可以使⽤ --color=auto 来将关键字部分使⽤颜⾊显⽰。

Linux命令行小技巧使用grep命令查找空白行

Linux命令行小技巧使用grep命令查找空白行

Linux命令行小技巧使用grep命令查找空白行在Linux命令行中,grep命令是一个非常有用的工具,它用于在文件中搜索指定的字符串或模式。

除了搜索具体的文本内容,grep命令还可以用来查找空白行,这在处理文本文件时非常实用。

本文将介绍如何使用grep命令查找空白行,并提供几个小技巧帮助您更高效地使用该命令。

一、grep命令简介grep命令是一种强大的文本搜索工具,它可以在文件或输入流中查找与指定模式匹配的行,并将其输出到标准输出中。

它的基本语法如下:grep [选项] 模式 [文件]其中,选项是可选的,用于指定搜索的模式和文件。

如果不指定文件,则grep命令将从标准输入中读取内容进行搜索。

二、使用grep命令查找空白行在Linux系统中,文本文件中的空白行通常指的是不含任何字符或只包含空格、制表符等空白字符的行。

使用grep命令查找空白行非常简单,只需将模式指定为空即可。

以下是一个示例:grep '^$' file.txt在这个示例中,^表示行的开头,$表示行的结尾,两者连在一起形成了一个空白行的模式。

file.txt是待搜索的文件名。

三、使用grep命令查找包含空白行的文件有时候,我们需要查找一个文件夹下所有包含空白行的文件。

grep命令可以通过使用-r选项递归搜索指定文件夹下所有文件,并输出包含空白行的文件名。

以下是一个示例:grep -r '^$' folder/在这个示例中,-r选项表示递归搜索,folder/是待搜索的文件夹名。

四、使用grep命令查找空白行并统计数量除了查找空白行,有时候我们还需要知道空白行的数量。

grep命令提供了-c选项,可以用于统计匹配到的行数(即空白行的数量)。

以下是一个示例:grep -c '^$' file.txt在这个示例中,-c选项用于统计匹配到的行数。

五、使用grep命令查找除空白行外的其他行有时候,我们需要查找除空白行外的其他行。

linux grep命令详解 正则

linux grep命令详解 正则

linux grep命令详解正则【实用版】目录1.Linux grep 命令简介2.grep 命令的基本语法3.正则表达式在 grep 命令中的应用4.grep 命令的选项与参数5.grep 命令的实例分析正文【1.Linux grep 命令简介】grep(全局正则表达式打印,global regular expression print)是 Linux 系统中一个强大的文本搜索工具,它可以使用正则表达式搜索文本文件中的内容,然后将匹配的行输出。

grep 命令在日常的文本处理、日志分析等场景中都有着广泛的应用。

【2.grep 命令的基本语法】grep 的基本语法如下:```grep "pattern" file```其中,"pattern" 是要搜索的正则表达式,file 是要搜索的文件。

【3.正则表达式在 grep 命令中的应用】正则表达式是一种用来描述字符或字符串模式的文本字符串。

在grep 命令中,正则表达式用于精确地匹配搜索内容。

正则表达式可以使用一些特殊符号来表示字符集、量词等。

例如:- `.` 匹配任意字符- `*` 匹配零个或多个前面的字符- `+` 匹配一个或多个前面的字符- `?` 匹配前面的字符零次或一次- `{n}` 匹配前面的字符 n 次- `{n,}` 匹配前面的字符 n 次或多次- `{n,m}` 匹配前面的字符 n 到 m 次【4.grep 命令的选项与参数】grep 命令除了基本的搜索功能外,还提供了许多选项与参数来满足不同场景的需求。

常用的选项与参数如下:- -i:忽略大小写- -n:显示匹配行的行号- -v:反转匹配,输出不匹配的行- -r:递归查找目录下的所有文件- -w:只匹配整个单词- -c:显示匹配的行数而非具体内容【5.grep 命令的实例分析】假设我们有一个名为 sample.txt 的文件,内容如下:```appleorangebananagrapelemon```我们可以使用 grep 命令来搜索包含字母 "a" 的行:```grep "a" sample.txt```输出结果为:```appleorangebanana```如果我们想要忽略大小写进行搜索,可以使用 -i 选项:```grep -i "a" sample.txt```输出结果不变。

linux中grep命令的详细解释

linux中grep命令的详细解释

linux中grep命令的详细解释linxu下的grep命令其实是一个搜索文件文本的工具。

下面由店铺为大家整理了linux的grep命令的详细解释的相关知识,希望对大家有帮助!一、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。

二、linux中的grep命令的详解实例1.grep命令使用简单实例$ 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),找到就显示该行。

linux命令大全之grep命令详解(文本搜索工具)

linux命令⼤全之grep命令详解(⽂本搜索⼯具)Linux系统中grep命令是⼀种强⼤的⽂本搜索⼯具,它能使⽤正则表达式搜索⽂本,并把匹配的⾏打印出来。

grep全称是Global Regular Expression Print,表⽰全局正则表达式版本,它的使⽤权限是所有⽤户。

grep的⼯作⽅式是这样的,它在⼀个或多个⽂件中搜索字符串模板。

如果模板包括空格,则必须被引⽤,模板后的所有字符串被看作⽂件名。

搜索的结果被送到标准输出,不影响原⽂件内容。

grep可⽤于shell脚本,因为grep通过返回⼀个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的⽂件不存在,则返回2。

我们利⽤这些返回值就可进⾏⼀些⾃动化的⽂本处理⼯作。

1.命令格式:复制代码代码如下:grep [option] pattern file2.命令功能:⽤于过滤/搜索的特定字符。

可使⽤正则表达式能多种命令配合使⽤,使⽤上⼗分灵活。

3.命令参数:-a --text #不要忽略⼆进制的数据。

-A<显⽰⾏数> --after-context=<显⽰⾏数> #除了显⽰符合范本样式的那⼀列之外,并显⽰该⾏之后的内容。

-b --byte-offset #在显⽰符合样式的那⼀⾏之前,标⽰出该⾏第⼀个字符的编号。

-B<显⽰⾏数> --before-context=<显⽰⾏数> #除了显⽰符合样式的那⼀⾏之外,并显⽰该⾏之前的内容。

-c --count #计算符合样式的列数。

-C<显⽰⾏数> --context=<显⽰⾏数>或-<显⽰⾏数> #除了显⽰符合样式的那⼀⾏之外,并显⽰该⾏之前后的内容。

-d <动作> --directories=<动作> #当指定要查找的是⽬录⽽⾮⽂件时,必须使⽤这项参数,否则grep指令将回报信息并停⽌动作。

linuxgrep命令用法

linuxgrep命令用法Linux grep命令是一个非常强大的文本搜索工具,可以帮助用户在文本文件中查找指定的字符串,并输出包含该字符串的所有行。

grep命令的基本语法是:grep [options] pattern [file...]其中,pattern表示要搜索的字符串模式,file表示要在哪些文件中进行搜索。

下面是一些常用的grep命令选项及用法:1. 搜索指定字符串:可以直接在命令中指定要搜索的字符串,例如:grep "hello" file.txt,这将在file.txt文件中搜索包含"hello"的所有行。

2. 搜索多个文件:可以同时在多个文件中搜索指定字符串,例如:grep "hello" file1.txt file2.txt。

3. 搜索文件夹中的所有文件:可以使用通配符*来搜索文件夹中的所有文件,例如:grep "hello" folder/*。

4. 忽略大小写:可以使用-i选项来忽略大小写进行搜索,例如:grep -i "hello" file.txt。

5. 显示行号:可以使用-n选项来显示匹配行的行号,例如:grep -n "hello" file.txt。

6. 显示匹配的行数:可以使用-c选项来显示匹配行的行数,例如:grep -c "hello" file.txt。

7. 显示不匹配的行:可以使用-v选项来显示不包含指定字符串的行,例如:grep -v "hello" file.txt。

8. 使用正则表达式:grep支持使用正则表达式进行搜索,例如:grep "he.l." file.txt可以匹配"hello"、"hel1o"等。

9. 递归搜索:可以使用-r选项来递归搜索文件夹中的所有文件,例如:grep -r "hello" folder。

linux下的grep用法详解

linux下的grep⽤法详解Grep : g (globally) search for a re (regular e-xpression ) and p (print ) the results.1、参数:-I :忽略⼤⼩写-c :打印匹配的⾏数-l :从多个⽂件中查找包含匹配项-v :查找不包含匹配项的⾏-n:打印包含匹配项的⾏和⾏标2、RE(正则表达式)\ 忽略正则表达式中特殊字符的原有含义^ 匹配正则表达式的开始⾏$ 匹配正则表达式的结束⾏\< 从匹配正则表达式的⾏开始\> 到匹配正则表达式的⾏结束[ ] 单个字符;如[A] 即A符合要求[ - ] 范围;如[A-Z]即A,B,C⼀直到Z都符合要求. 所有的单个字符* 所有字符,长度可以为03、举例# ps -ef | grep in.telnetdroot 19955 181 0 13:43:53 ? 0:00 in.telnetd# more size.txt size⽂件的内容b124230b034325a081016m7187998m7282064a022021a061048m9324822b103303a013386b044525m8987131B081016M45678B103303BADc2345# more size.txt | grep '[a-b]' 范围;如[A-Z]即A,B,C⼀直到Z都符合要求b124230b034325a081016a022021a061048b103303a013386b044525# more size.txt | grep '[a-b]'*b124230b034325a081016m7187998m7282064a022021a061048m9324822b103303a013386b044525m8987131B081016M45678B103303BADc2345# more size.txt | grep '[b]' 单个字符;如[A] 即A符合要求b124230b034325b103303b044525# more size.txt | grep '[bB]'b124230b034325b103303b044525B081016B103303BADc2345# 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 size.txt | grep -i 'b1..*3' -i :忽略⼤⼩写b124230b103303B103303# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的⾏b034325a081016m7187998m7282064a022021a061048m9324822a013386b044525m8987131B081016M45678BADc2345# more size.txt | grep -in 'b1..*3'1:b1242309:b10330315:B103303# grep '$' /etc/init.d/nfs.server | wc -l128# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义15# grep '\$' /etc/init.d/nfs.servercase "$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/rmmount.conf ] &&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 }"# more size.txtthe test filetheir are filesThe end# grep 'the' size.txtthe test filetheir are files# grep '\<the' size.txtthe test filetheir are files# grep 'the\>' size.txtthe test file# grep '\<the\>' size.txtthe test file# grep '\<[Tt]he\>' size.txtthe test file==================================================================1,简介使⽤正则表达式的⼀个多⽤途⽂本搜索⼯具.这个命令本来是ed⾏编辑器中的⼀个命令/过滤器: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 grep3,常⽤grep实例(1)多个⽂件查询grep "sort" *.doc #见⽂件名的匹配(2)⾏匹配:输出匹配⾏的计数grep -c "48" data.doc #输出⽂档中含有48字符的⾏数(3)显⽰匹配⾏和⾏数grep -n "48" data.doc #显⽰所有匹配48的⾏和⾏号(4)显⽰⾮匹配的⾏grep -vn "48" data.doc #输出所有不包含48的⾏(4)显⽰⾮匹配的⾏grep -vn "48" data.doc #输出所有不包含48的⾏(5)⼤⼩写敏感grep -i "ab" data.doc #输出所有含有ab或Ab的字符串的⾏4, 正则表达式的应⽤(1)正则表达式的应⽤ (注意:最好把正则表达式⽤单引号括起来)grep '[239].' data.doc #输出所有含有以2,3或9开头的,并且是两个数字的⾏(2)不匹配测试grep '^[^48]' data.doc #不匹配⾏⾸是48的⾏(3)使⽤扩展模式匹配grep -E '219|216' data.doc(4) ...这需要在实践中不断应⽤和总结,熟练掌握正则表达式。

linux中grep命令详解

grep用法详解:grep与正则表达式首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串。

vi grep ,awk ,sed 等都支持正则表达式.1基础正则表达式grep 工具,以前介绍过。

grep -[acinv] '搜索内容串' filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v 反向选择,即找没有搜索字符串的行其中搜索串可以是正则表达式!1搜索有the的行,并输出行号$grep -n 'the' regular_express.txt搜索没有the的行,并输出行号$grep -nv 'the' regular_express.txt2 利用[]搜索集合字符[] 表示其中的某一个字符,例如[ade] 表示a或d或ewoody@xiaoc:~/tmp$ grep -n 't[ae]st' regular_express.txt8:I can't finish the test.9:Oh! the soup tast e good!可以用^符号做[]内的前缀,表示除[]内的字符之外的字符。

比如搜索oo前没有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt2:apple is my favorite foo d.3:Foo tball game is not use feet only.18:google is the best too ls for search keyword.19:go ooo oogle yes![] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档