grep用法大全&&grep常用用法总结

您所在的位置:网站首页 linux中grep grep用法大全&&grep常用用法总结

grep用法大全&&grep常用用法总结

#grep用法大全&&grep常用用法总结| 来源: 网络整理| 查看: 265

    Linux系统中,grep命令通常用来实现行的过滤。用法汇总如下。

一、使用方式

1、直接查询文件中的行:

    grep [OPTION]... PATTERN [FILE]...

2、用在管道符“|”后面,过滤来自标准输入的信息,例如:

    查询8000端口的TCP连接数:netstat -nat | grep -i "8000" | wc -l

    输出文件text.txt中以"2019"开头的行到text2.txt:cat text.txt | grep '^2019' > text2.txt

二、选项汇总1、正则相关的选项

    正则相关的选项,指的是这些选项是作用于grep后面加的正则表达式的。包括:

-E, --extended-regexp     PATTERN is an extended regular expression (ERE):正则的类型是拓展的正则表达式-F, --fixed-strings       PATTERN is a set of newline-separated fixed strings:正则是换行符分割的字符串集合-G, --basic-regexp        PATTERN is a basic regular expression (BRE):正则的类型是普通的正则表达式(默认)-P, --perl-regexp         PATTERN is a Perl regular expression:正则的类型是Perl正则表达式-e, --regexp=PATTERN      use PATTERN for matching:使用参数后面的正则进行匹配-f, --file=FILE           obtain PATTERN from FILE:从目标文件中获取正则进行匹配-i, --ignore-case         ignore case distinctions:忽略大小写的不同-w, --word-regexp         force PATTERN to match only whole words:全字符匹配,即目标行中匹配正则范本的必须是一个完整的词-x, --line-regexp         force PATTERN to match only whole lines:整行匹配,要求目标行整行必须匹配正则范本-z, --null-data           a data line ends in 0 byte, not newline:以字节0而不是换行符结尾的数据行2、输出控制相关的选项

    输出控制相关的选项,指的是输出到目标的时候需要做的操作,包括:

-m, --max-count=NUM       stop after NUM matches:输出的最大行数-b, --byte-offset         print the byte offset with output lines:每一行输出的时候,行前偏移的字节数-n, --line-number         print line number with output lines:在输出行的前面输出行号    --line-buffered       flush output on every line:每一行输出后都清除缓存-H, --with-filename       print the file name for each match:在每一个匹配的行前打印文件名-h, --no-filename         suppress the file name prefix on output:禁止输出文件名前缀。文件名前缀来源参考上面一条    --label=LABEL         use LABEL as the standard input file name prefix:使用LABEL作为输出文件名的前缀-o, --only-matching       show only the part of a line matching PATTERN:只显示行中匹配正则表达式的部分-q, --quiet, --silent     suppress all normal output:禁止所有的正常输出    --binary-files=TYPE   assume that binary files are TYPE:假定二进制文件的类型是TYPE                          TYPE is 'binary', 'text', or 'without-match'-a, --text                equivalent to --binary-files=text:等效于--binary-files=text-I                        equivalent to --binary-files=without-match:等效于--binary-files=without-match-d, --directories=ACTION  how to handle directories;                          ACTION is 'read', 'recurse', or 'skip':如何处理目录-D, --devices=ACTION      how to handle devices, FIFOs and socket;                          ACTION is 'read' or 'skip':如何处理设备、管道流和套接字-r, --recursive           like --directories=recurse:类似于--directories=recurse-R, --dereference-recursive  likewise, but follow all symlinks:类似于'-r'与'-d recurse', 但是使用符号链接    --include=FILE_PATTERN  search only files that match FILE_PATTERN:只搜索匹配FILE_PATTERN的文件    --exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN:跳过匹配FILE_PATTERN的文件和目录    --exclude-from=FILE   skip files matching any file pattern from FILE:跳过匹配任意FILE中包含的文件范式    --exclude-dir=PATTERN  directories that match PATTERN will be skipped.:跳过匹配PATTERN的目录-L, --files-without-match  print only names of FILEs containing no match:打印出文件内容出包含不符合文件范式的文件的文件名-l, --files-with-matches  print only names of FILEs containing matches:打印出文件内容出包含符合文件范式的文件的文件名-c, --count               print only a count of matching lines per FILE:计算每个文件中符合正则范式的的行数-T, --initial-tab         make tabs line up (if needed):对齐标签-Z, --null                print 0 byte after FILE name:在文件名后面输出字节03、上下文控制相关的选项

    上下文控制相关的一些选项,里面涉及到一些回车和换行符,不理解二者关系和在不同操作系统中使用情况的童鞋可以看这里:不同操作系统下的回车符和换行符

-B, --before-cOntext=NUM  print NUM lines of leading context:打印内容包含匹配行前面的NUM行信息-A, --after-cOntext=NUM   print NUM lines of trailing context:打印内容包含匹配行后面的NUM行信息-C, --cOntext=NUM         print NUM lines of output context:打印内容包含匹配行前面和后面的NUM行信息-NUM                      same as --cOntext=NUM:类似于--cOntext=NUM,即上面一条配置    --color[=WHEN],    --colour[=WHEN]       use markers to highlight the matching strings;:使用高亮来标记匹配的内容,                          WHEN is 'always', 'never', or 'auto':WHEN指的是标记的时机,内容是'always', 'never', or 'auto'-U, --binary              do not strip CR characters at EOL (MSDOS/Windows):不要在换行符中去掉回车符(用于MSDOS/Windows操作系统)-u, --unix-byte-offsets   report offsets as if CRs were not there (MSDOS/Windows):在忽略MSDOS/Windows操作系统中的回车符的前提下记录偏移量4、其他选项

    还有一些很难被分类的选项,包括:

  -s, --no-messages         suppress error messages:禁用错误输出信息  -v, --invert-match        select non-matching lines:选择不匹配的行  -V, --version             print version information and exit:打印版本信息并退出      --help                display this help and exit:显示grep的帮助文档并退出三、常用用法1、常用选项

    上面的选项非常多,但是其实常用的很少,主要包括下面这些:

    常用选项如下:

-a、--text :将二进制文件以文本文件的方式搜寻数据-c 、--count:计算找到 '搜寻字符' 的次数-i、--ignore-case、--binary-files=text:忽略大小写的不同,所以大小写视为相同-n、--line-number:number,顺便输出行号-v 、--invert-match:反向选择,亦即显示出没有 '搜寻字符' 内容的那一行--binary-files=TYPE:假定二进制文件是TYPE格式的,TYPE包括:'binary', 'text', or 'without-match'--color=auto :可以将找到的关键词部分加上颜色的显示-m, --max-count=NUM:输出的最大行数-A:-B:-C:2、过滤多个关键字:“与”和“或”

1、“与”操作:

    与逻辑可以通过增加管道流操作来实现。例如如果需要打印出文件test.txt中匹配同时包含“abc"和"123"的行,可以用如下方式:

cat test.txt | grep "abc" | grep "123"

2、“或”操作:

    或逻辑可以通过修改正则表达式来实现。例如例如如果需要打印出文件test.txt中匹配包含“abc"或者包含"123"的行,可以用如下方式:

cat test.txt | grep "abc|123"

3、单引号和双引号

    双引号:双引号是部分引用,如果引号中包含命令会先解析出来,例如"$num",会去解析遍历num的值。

    单引号:单引号是全部引用,即引号中包含什么就作为什么字符串,例如'$num',会当做字符串内容为$num四个字符的字符串来处理。

四、常用语法总结(持续更新)

    这里总结一些平时用到的有趣的例子,持续更新。

过滤以“abc”开头的行:grep "^abc"过滤不包含"abc"的行:grep -v "abc"过滤包含"abc"的行并查看最后两行:grep "adb" | tail -n 2过滤包含"abc"的行并查看最前面一行:grep -m 1  "adb"过滤包含"abc"的行并查看第一项(和上面的区别是,如果如果第一行有多个匹配项,上面会显示整行,这里只会显示第一行的第一项):grep -m 1  "adb"  |  head 1过滤包含"abc"的行并显示前面两行和后面三行:grep -B2 -A3 "adb"过滤包含"abc"的行并显示前面两行和后面两行:grep -C2 "adb"



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3