- grep命令
grep命合组在文本文件中查找指定模式的词或短语,并在标准输出设备上显示包括给定字符串模式的所有行,包含3个命令:grep, egrep 和fgrep命令。grep命令一次只能搜索一个指定的模式: egrep 命令等同于grep -E,可以使用扩展的字符串模式进行搜索: fgrep命令等同于grep-F, 是快速搜索命令,检索固定字符串,但不识别正则表达式。(1)一般格式
grep [选项] 查找模式[文件名1,文件名2, …
grep[选项] [-e 查找模式| -f文件] [文件名1,文件名2,…
(2)说明
grep命令组在指定文件中搜索特定模式及定位特定主题等方面用途很大。要搜索的模式被看成关键词,查看指定的文件中是否包含这些关键词。这3个命令的功能类似,但由于可以搜索的模式不同,因此在功能强弱上有些差别。
如果没有指定文件,它们就从标准输入中读取。在正常情况下,每个匹配行被显示到标准输出上。若要搜索的文件不止一个,则在每行输出之前加上文件名。
(3)常用选项
-E:将查找模式解释成扩展的正则表达式。
-F:将查找模式解释成单纯的字符串。
-b,–byte-offset:在输出的每一行前面显示包含匹配字符串的行在文件中的位置,用字节偏移量
-c,–count: 只显示文件中包含匹配字符串的行的总数。
-fFILE: 从文件FILE中获取模式,每行一个。空文件不含模式,因此不做匹配。
-i, --ignore-case:匹配比较时不区分字母的大小写。
-R,-r,–recursive: 以递归方式查询目录下的所有子目录中的文件。
-n:在输出包含匹配模式的行之前,加上该行的行号(文件首行的行号为1)。
-v: 只显示不包含匹配字符串的文本行。
-x: 只显示整个行都严格匹配的行。
(4)注意
①在命令名后先输入搜索的模式,然后是要搜索的文件。
②2在文件名列表中可以使用通配符,如“*”等。
③要查找目录的子目录中的文件,应使用一选项。
④若在搜索校式的字符串中包含空格。则应用单引号把模式字符串括起米。⑤利用选项-f可以大批地在文件中搜索字符串。
(5)示例
①在密码文件/etc/passwd中查找包含mengqc的所有行:
$ grep-Fmengqc /etc/passwd
mengqc❌ 500💯 mengqc : /home/mengqc: /bin/bash
②在mengqc目录和子目录下的所有文件中查找字符串print出现的次数:$ grep -r ‘print’ mengqc
③在文件f1和f2中查找包含main或者printf的所有行,不管首字母的大小写:
$ grep -E’[Mm]ain| [Pp]rintf’ f1 f2
或者
$ grep -i’main|printf’ f1 f2