0°

grep命令

来源:《linux 101 hacks》

grep 命令是用来在文件中查找含有一些特定文本。grep有许多参数,它是一个非常有用的命令。

语法:grep [选项] pattern [文件名]

在一个文件中,如何查找所有可以匹配关键字的内容?

在下面这个例子中,grep 在“/etc/password/” 文件下查找所有含有“John” 的行并全部显示出来

$ grep John /etc/passwd

jsmith:x:1082:1082:John Smith:/home/jsmith:/bin/bash
jdoe:x:1083:1083:John Doe:/home/jdoe:/bin/bash

参数-v 会显示出所有不包含匹配文本的内容。下面的例子中,显示了所有在“/etc/password”下不含有“John”的内容。

注:在“/etc/password”下有几行不包含“John”,只有第一行显示了

$ grep -v John /etc/passwd

jbourne:x:1084:1084:Jason Bourne:/home/jbourne:/bin/bash

在一个特定的文件中有多少行包含指定的匹配内容呢?

在下面这个例子中,显示了在“/etc/password/”下含有“John”的行的总数

$ grep -c John /etc/passwd

用-cv 也可以得到不含有“John”的行的总数

$ grep -cv John /etc/passwd

如何在查找时忽略大小写

利用“-i”,搜索的时候会忽略大小写

$ grep -i john /etc/passwd

jsmith:x:1082:1082:John Smith:/home/jsmith:/bin/bash
jdoe:x:1083:1083:John Doe:/home/jdoe:/bin/bash

如何在所有的子目录下执行相应的查找?

可以利用“-r”来完成。在下面的例子中,在“/home/users/”的子目录下忽略大小写,查找“John”,这会以“文件名:匹配的内容”形式显示。也可以利用参数“-l”,只显示文件名。

$ grep -ri john /home/users

/home/users/subdir1/letter.txt:John, Thanks for your contribution.
/home/users/name_list.txt:John Smith
/home/users/name_list.txt:John Doe

$ grep -ril john /root

/home/users/subdir1/letter.txt
/home/users/name_list.txt

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
Linux技巧
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论