1. grep最简单的用法,匹配一个词:grep word filename

2. 能够从多个文件里匹配:grep word filename1 filenam2 filename3

3. 能够使用正則表達式匹配:grep -E pattern f1 f2 f3...

4. 能够使用-o仅仅打印匹配的字符,例如以下所看到的:

lichao@ubuntu:command$ echo this is a line. | grep -E -o "[a-z]*\."
line.

5. 打印除匹配行之外的其它行,使用-v

lichao@ubuntu:command$ echo -e "1\n2\n3\n4" | grep -v -E "[1-2]"
3
4

6. 统计匹配字符串的行数。使用-c

lichao@ubuntu:command$ echo -e "1111\n2222" | grep -E "[1-2]" -c
2

7. 假设我们统计字符串模式匹配的次数。能够结合-o和-c。例如以下:

lichao@ubuntu:command$ echo -e "1111\n2222" | grep -o -E "[1-2]"  | wc -l
8

8. 假设须要显示行号,能够打开-n,例如以下:

lichao@ubuntu:command$ echo -e "1111\n2222\n33333\n44444" | grep -n -E "3"
3:33333

9. -b选项能够打印出匹配的字符串想对于其所在的行起始位置的偏移量(从0開始)。通常配合-o使用,例如以下:

lichao@ubuntu:command$ echo "0123456789" | grep -b -o 4
4:4

10. 当字符串在多个文件里匹配时。-l选项将仅仅打印文件名称

11. -L与-l相对。仅仅打印不匹配的文件名称

lichao@ubuntu:command$ cat test1.txt
linux
is
fun
lichao@ubuntu:command$ cat test2.txt
a
very
popular
os,
linux
lichao@ubuntu:command$ cat test3.txt
what
the
fxxk
lichao@ubuntu:command$ grep -l linux test1.txt test2.txt test3.txt
test1.txt
test2.txt
lichao@ubuntu:command$ grep -L linux test1.txt test2.txt test3.txt
test3.txt

12. 打开递归搜索功能

lichao@ubuntu:command$ grep -n -R linux .
./test2.txt:5:linux
./test1.txt:1:linux

13. 忽略大写和小写:-i

lichao@ubuntu:command$ echo "HELLO WORLD" | grep -i "hello"
HELLO WORLD

14. 匹配多个字符串模式

lichao@ubuntu:command$ echo "This is a line." | grep -e "This" -e "is" -e "line" -o
This
is
line

15. 用单独的文件提供匹配样式,每一个匹配的样式作为一行,例如以下例所看到的:

lichao@ubuntu:command$ cat pattern.txt
1$
2
3
lichao@ubuntu:command$ cat num.txt
1
2
3
4
5
6
7
8
9
10
lichao@ubuntu:command$ grep -f pattern.txt num.txt
1
2
3

16. 打印匹配行上下文信息,使用 -A n打印匹配行及其后n行信息。使用-B n打印匹配行及其前n行信息。使用 -C n。打印匹配行及其前后n行信息。假设有多重匹配,将使用--隔离。

示比例如以下:

lichao@ubuntu:command$ seq 1 10 | grep 5 -A 3
5
6
7
8
lichao@ubuntu:command$ seq 1 10 | grep 5 -B 3
2
3
4
5
lichao@ubuntu:command$ seq 1 10 | grep 5 -C 3
2
3
4
5
6
7
8
lichao@ubuntu:command$ echo -e "a\nb\nc\nd\na\nb\nc\nd\n" | grep a -A 2
a
b
c
--
a
b
c

17. 使用-q进入静默模式,该模式下。grep命令执行目的不过执行一个条件測试。通常在脚本中使用。通过检查其返回值进行下一步操作。示比例如以下:

lichao@ubuntu:command$ cat tmp.txt
hello
world
lichao@ubuntu:command$ cat tmp.csh
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Usage: $0 match_pattern file_name"
exit
fi
match=$1
file=$2
grep -q $match $file
if [ $? -ne 0 ]; then
echo "$match not exist in $file"
else
echo "$match exist in $file"
fi
lichao@ubuntu:command$ ./tmp.csh hello tmp.txt
hello exist in tmp.txt

18. -Z选项在输出匹配文件名称时将以/0结尾配合xargs -0能够发挥非常多作用,比如删除匹配某个模式的文件例如以下:

lichao@ubuntu:command$ ls -llrt
total 28
-rw-rw-r-- 1 lichao lichao 13 Nov 1 20:38 test1.txt
-rw-rw-r-- 1 lichao lichao 27 Nov 1 20:39 test2.txt
-rw-rw-r-- 1 lichao lichao 14 Nov 1 20:39 test3.txt
-rw-rw-r-- 1 lichao lichao 21 Nov 1 20:45 num.txt
-rw-rw-r-- 1 lichao lichao 7 Nov 1 20:45 pattern.txt
-rw-rw-r-- 1 lichao lichao 12 Nov 1 21:25 tmp.txt
-rwxr-xr-x 1 lichao lichao 217 Nov 1 21:27 tmp.csh
lichao@ubuntu:command$ cat test1.txt
linux
is
fun
lichao@ubuntu:command$ cat test2.txt
a
very
popular
os,
linux
lichao@ubuntu:command$ grep "linux" * -lZ | xargs -0 rm
lichao@ubuntu:command$ ls
num.txt pattern.txt test3.txt tmp.csh tmp.txt

以上命令将包括linux字符串的test1.txt和test2.txt删除。

19. 排除/包含文件或者文件夹:1)--include *{.c,.cpp} 仅仅在文件夹中搜索.c和.cpp文件;2)--exclude "README" 排除全部README文件 3) --include-dir 仅在某些文件夹中搜索 4) --exclude-dir 排除某些文件夹 5) --exclude-from FILE 从文件FILE中读取须要排除的文件列表

lichao@ubuntu:test$ ls
dir1 dir2 exclude.config test1.txt test2.doc test3.word
lichao@ubuntu:test$ cat test1.txt
linux
is
fun
lichao@ubuntu:test$ cat test2.doc
wonderful
os,
linux
lichao@ubuntu:test$ cat test3.word
wonderful
os,
linux
lichao@ubuntu:test$ ls dir1/
test1.txt test2.doc test3.word
lichao@ubuntu:test$ ls dir2/
test1.txt test2.doc test3.word
lichao@ubuntu:test$ cat exclude.config
*.txt
lichao@ubuntu:test$ grep "linux" -R -n .
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir2/test1.txt:1:linux
./dir1/test2.doc:3:linux
./dir1/test3.word:3:linux
./dir1/test1.txt:1:linux
lichao@ubuntu:test$ grep "linux" -R -n . --include *.txt --include *.doc
./test2.doc:3:linux
./test1.txt:1:linux
./dir2/test2.doc:3:linux
./dir2/test1.txt:1:linux
./dir1/test2.doc:3:linux
./dir1/test1.txt:1:linux
lichao@ubuntu:test$ grep "linux" -R -n . --exclude *.txt --eclude *.doc
grep: unrecognized option '--eclude'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
lichao@ubuntu:test$ grep "linux" -R -n . --exclude *.txt --exclude *.doc
./test3.word:3:linux
./dir2/test3.word:3:linux
./dir1/test3.word:3:linux
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-dir dir1
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir2/test1.txt:1:linux
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-dir dir1 --exclude-dir dir2
./test2.doc:3:linux
./test3.word:3:linux
./test1.txt:1:linux
lichao@ubuntu:test$ grep "linux" -R -n . --exclude-from exclude.config
./test2.doc:3:linux
./test3.word:3:linux
./dir2/test2.doc:3:linux
./dir2/test3.word:3:linux
./dir1/test2.doc:3:linux
./dir1/test3.word:3:linux

已上即为grep经常使用的选项。

注意:转载请注明出处。

grep命令最经常使用的功能总结的更多相关文章

  1. grep命令的or,and,not操作的例子

    在Linux的grep命令中如何使用OR,AND,NOT操作符呢? 其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符.不过呢,可以使用patterns来模拟 ...

  2. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  3. grep 命令操作

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  4. 每天一个linux命令(39):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  5. 由一条Linux的grep命令说起

    今天在开发的时候,看到同事使用了这样的一条linux命令 grep 'class YourClass' -rwi * |grep -v svn 想到了 grep命令的,几个参数. -r 明确要求搜索子 ...

  6. liunx 的 grep命令(转载)

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  7. linux命令学习(1):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  8. Linux之grep命令详解

    简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...

  9. linux grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

随机推荐

  1. Openjudge-4132-四则运算表达式求值

    这一题我们可以通过递归求解,首先我们可以把一个表达式分为三部分,分别是: (1)表达式 :项.加减 (2)项:因子.乘除 (3)因子:数.()表达式 这三项构成了递归的关系,我们可以看到,要求一个表达 ...

  2. 怎么给xshell服务配置密钥远程登陆

    xshell密钥登陆 1.找一台测试服务器xiuxiu-test生成密钥对2. cd ./.ssh/ && 把公钥放在~/.ssh/authorized_keys文件中  cat id ...

  3. tornado框架基础09-cookie和session

    01 cookie 在上节,我们简单了解了登录过程,但是很明显,每次都需要登录,但是在平常逛网站的只需要登录一次,那么网站是如何记录登录信息的呢? 有没有什么办法可以让浏览器记住登录信息,下次再次打开 ...

  4. 剑指Offer(书):用两个栈实现队列

    题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 分析:入栈时只入栈1,出栈为栈2:若栈2不为空,直接出栈:否则,将栈1中的值依次入栈2,之后栈2出栈 Sta ...

  5. SSM整合shiro

    采用maven构建项目 1pom.xml中加入shiro依赖 <!-- shiro --> <dependency> <groupId>org.apache.shi ...

  6. 调试jz2440生成特定后缀的命令

    生成dis命令: arm-linux-objdump -D u-boot> u-boot.dis 版权声明:本文为博主原创文章,未经博主允许不得转载.

  7. [Vijos1067]Warcraft III 守望者的烦恼(DP + 矩阵优化)

    传送门 可知 f[i] = f[i - 1] + f[i - 2] + ... + f[i - k] 直接矩阵优化就好了 #include <cstdio> #include <cs ...

  8. 洛谷P1432 倒水问题

    题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...

  9. 【BZOJ1492】货币兑换Cash(CDQ分治)

    题意: 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪 念券(以下简称 A 券)和 B 纪念券(以下简称 B 券).每个持有金券的顾客都有 一个自己的帐户.金券的数目可以是一 ...

  10. Android视图组成View

    视图组成View 创建时间: 2013-9-13 10:51 更新时间: 2013-9-13 11:04