grep用法大全&&grep常用用法总结 | 您所在的位置:网站首页 › linux中grep › grep用法大全&&grep常用用法总结 |
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 实验室设备网 版权所有 |