乐趣区

关于运维:Grep使用方法

Linux grep 命令

Linux grep 命令用于查找文件里符合条件的字符串;也能够用于查找内容蕴含指定的范本款式的文件。它能应用正则表达式搜寻,用于在文件中搜寻指定的字符串模式,列出含有匹配模式子符串的文件名,并输入含有该字符串的文本行。

grep 的工作形式是这样的:它在一个或多个文件中搜寻字符串模板。如果模板包含空格,则必须被援用,模板后的所有字符串被看作文件名。搜寻的后果被送到规范输入,不影响原文件内容。

根本语法:

grep [options] pattern [files]
[options]的主要参数:

-a 或 –text : 不要疏忽二进制的数据。

-A< 显示行数 > 或 –after-context=< 显示行数 > : 除了显示合乎范本款式的那一列之外,并显示该行之后的内容。

-b 或 –byte-offset : 在显示合乎款式的那一行之前,标示出该行第一个字符的编号。

-B< 显示行数 > 或 –before-context=< 显示行数 > : 除了显示合乎款式的那一行之外,并显示该行之前的内容。

-c 或 –count : 计算合乎款式的列数。

-C< 显示行数 > 或 –context=< 显示行数 > 或 -< 显示行数 > : 除了显示合乎款式的那一行之外,并显示该行之前后的内容。

-d < 动作 > 或 –directories=< 动作 > : 当指定要查找的是目录而非文件时,必须应用这项参数,否则 grep 指令将回报信息并进行动作。

-e< 范本款式 > 或 –regexp=< 范本款式 > : 指定字符串做为查找文件内容的款式。

-E 或 –extended-regexp : 将款式为延长的一般表示法来应用。

-f< 规定文件 > 或 –file=< 规定文件 > : 指定规定文件,其内容含有一个或多个规定款式,让 grep 查找合乎规定条件的文件内容,格局为每行一个规定款式。

-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 : 在显示合乎款式的那一行之前,标示出该行的列数编号。

-o 或 –only-matching : 只显示匹配 PATTERN 局部。

-q 或 –quiet 或–silent : 不显示任何信息。

-r 或 –recursive : 此参数的成果和指定”-d recurse”参数雷同。

-s 或 –no-messages : 不显示错误信息。

-v 或 –revert-match : 显示不蕴含匹配文本的所有行。

-V 或 –version : 显示版本信息。

-w 或 –word-regexp : 只显示全字合乎的列。

-x –line-regexp : 只显示全列合乎的列。

-y : 此参数的成果和指定”-i”参数雷同。

-?:同时显示匹配行高低的?行,如:grep -2 pattern filename 同时显示匹配行的高低 2 行。

pattern 正则表达式主要参数:

\: 疏忽正则表达式中特殊字符的原含意。

^: 匹配正则表达式的开始行。

$: 匹配正则表达式的完结行。

\<: 从匹配正则表达式的行开始。

\>: 到匹配正则表达式的行完结。

[]:单个字符,如 [A] 即 A 符合要求。

.:所有的单个字符。

*:有字符,长度能够为 0。

代码示例:

示例 1:在当前目录中,查找前缀有“test”字样的文件中蕴含“test”字符串的文件,并打印出该字符串的行,此时,能够应用如下命令:

grep test test*
输入:

testfile1:This a Linux testfile! #列出 testfile1 文件中蕴含 test 字符的行

testfile_2:This is a linux testfile! #列出 testfile_2 文件中蕴含 test 字符的行

testfile_2:Linux test #列出 testfile_2 文件中蕴含 test 字符的行
示例 2:反向查找,通过”-v”参数能够打印出不符合条件行的内容。查找文件名中蕴含 test 的文件中不蕴含 test 的行

grep -v test test
输入:

testfile1:helLinux!

testfile1:Linis a free Unix-type operating system.

testfile1:Lin

testfile_1:HELLO LINUX!

testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.

testfile_1:THIS IS A LINUX TESTFILE!

testfile_2:HELLO LINUX!

testfile_2:Linux is a free unix-type opterating system.

Search Text in Files in Linux with Grep Command
20 Advanced Linux Find Command Examples
Find File By Name in Linux
Find Files in Linux with Find Command Examples

退出移动版