grep命令详解

通用正则表达式解析器(grep,General Regular Expression Parser),打印符合某个特征的行。

使用实例:

  1. 查找指定进程:``ps -ef | grep md`
  2. 在指定文件中查找有关键字的行:``grep “aa” greptest`
  3. 在多个文件中查找有关键字的行:``grep “aa” *` *表示该路径下的匹配零个或多个文件
  4. grep 统计日志时间 linux grep命令查看日志_正则表达式

  5. 管道符:| 命令1|命令2:命令1的正确执行结果作为明令2的操作对象。 grep "aa" * |grep "ty"
  6. grep 统计日志时间 linux grep命令查看日志_less_02

参数使用

  1. -c:计算符合样式的列数。grep -c “aa” \*
  2. grep 统计日志时间 linux grep命令查看日志_linux_03

  3. -A 显示行数:显示符合范本样式的那一列之外,并显示该行之的内容(行数)。
  4. grep 统计日志时间 linux grep命令查看日志_linux_04

  5. -B 显示行数:显示符合范本样式的那一列之外,并显示该行之的内容(行数)。
  6. grep 统计日志时间 linux grep命令查看日志_linux_05

  7. -C 显示行数:显示符合范本样式的那一列之外,并显示该行之前后的内容(行数)。
  8. grep 统计日志时间 linux grep命令查看日志_grep 统计日志时间 linux_06

  9. -R:递归的对目录下的所有文件(包括子目录)进行 grep
  10. grep 统计日志时间 linux grep命令查看日志_正则表达式_07

  11. -i:忽略大小写
  12. -h:取消每个输出行前缀,即匹配查询模式的文件名
  13. grep 统计日志时间 linux grep命令查看日志_less_08

  14. -l:只列出匹配行的文件名,而不输出真正的匹配行
  15. grep 统计日志时间 linux grep命令查看日志_linux_09

  16. grep默认支持通配符。正则表达式就是一些字符是有特殊含义的。

限定符

描述

实例

^

指向一行的开头

grep 统计日志时间 linux grep命令查看日志_less_10

$

指向一行的结尾

grep 统计日志时间 linux grep命令查看日志_字符串_11

.

单个字符

grep 统计日志时间 linux grep命令查看日志_grep 统计日志时间 linux_12

[ ]

[0-9]字母集合,[0-9a-z]表示字母与数字集合,在这里边的^表示的不是一行开头而是非,[^0-9]非数字字符

grep 统计日志时间 linux grep命令查看日志_less_13

\<

锚定单词的开始(实际上是:匹配字符之前的空格)

grep 统计日志时间 linux grep命令查看日志_less_14

\>

锚定单词的结束(实际上是:匹配字符之前的空格)

\b

等价于 \< 和 \>

grep 统计日志时间 linux grep命令查看日志_正则表达式_15

*

匹配前面的子表达式零次或多次。

grep 统计日志时间 linux grep命令查看日志_正则表达式_16

  1. -E:扩展正则表达式,当默认的表达是不够用时,就要使用扩展正则表达式

限定符

描述

实例

?

匹配前面的子表达式,最多一次。

grep 统计日志时间 linux grep命令查看日志_正则表达式_17

+

匹配前面的子表达式一次或多次。

grep 统计日志时间 linux grep命令查看日志_字符串_18

{N}

匹配前面的子表达式 N 次。

grep 统计日志时间 linux grep命令查看日志_less_19

{N,}

匹配前面的子表达式 N 次到多次。

{N,M}

匹配前面的子表达式 N 到 M 次,至少 N 次至多 M 次。

终端分页阅读器

有些文件非常长,无法在一屏的空间内显示完全。所以在查看这种文件时,我们需要分页显示。这时我们就可以使用 more ,less most 命令。

more 命令详解

  1. 空格键:查看下一屏; b键:查看上一屏
  2. 回车键:往下滚动一行;不支持向上滚动一行
  3. /字符串:向下搜索"字符串" 不支持向上搜索
  4. n键:匹配下一个关键字;不支持向上匹配
  5. q 键:退出。

缺点不能高亮查询,只能向下查询,不支持向上滚动一行

  1. 从指定行开始显示: more 默认是从第一行开始显示。但有时我们可能想直接从 100 行开始看,其实只需加一个 +50 即可。
  2. grep 统计日志时间 linux grep命令查看日志_linux_20

  3. more 命令默认是整屏显示,如果我们一次只想查看几行,要怎么操作?只需加一个 -N 选项即可,N 就是你想要查看的行数。
  4. grep 统计日志时间 linux grep命令查看日志_grep 统计日志时间 linux_21

  5. 终端里一共显示了 20 行。默认按下空格键是其内容后继续显示20行,如果我们想要每次按下空格键在另一个页面20行,我们只需加上 -c 选项。
  6. grep 统计日志时间 linux grep命令查看日志_字符串_22

    grep 统计日志时间 linux grep命令查看日志_less_23

  7. +/pattern 从文件中查找第一个出现字符串的行,并从该处前两行开始显示输出。
  8. grep 统计日志时间 linux grep命令查看日志_linux_24

  9. 也可以在该模式下。按/pattern,可以在文本中寻找下一个相匹配的模式(pattern)。再按n匹配下一个模式。 不支持向上查找

less 命令详解

  1. 空格键:查看下一屏; b键:查看上一屏 d键: 向后翻半页 u键: 向前翻半页
  2. 回车键:往下滚动一行; 上下键:向上下滚动一行
  3. /字符串:向下搜索"字符串" ?字符串:向上搜索"字符串"
  4. n键:匹配下一个关键字; N键:匹配上一个关键字
  5. q 键:退出。

相比较比more 命令,

  1. less可以在整个文件中任意阅读(支持向上滚动一行)。
  2. 支持向上查询(N)(?)
  3. less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
  4. 会高亮显示

注意:如果您使用less查看一个小文件,您将在顶部看到空的空白行。不要慌。文件中没有多余的行。只是less命令命令的显示方式而已。

"less -e" 当文件显示结束后,自动离开,无需输入"q"

“less -f” 强迫打开特殊文件,例如外围设备代号、目录和二进制文件

"less -m" 显示类似more命令的百分比

“less -N” 显示每行的行号

“less -s” 将连续的空行合并成一行显示

“less -S” 行信息过长时,将超出部分舍弃

  1. 如果需要向下搜索,输入(/字符串):按 n 键:跳转到下一个匹配的字符串,按 N 键:跳转到上一个匹配的字符串
/linux
  1. 如果需要向上搜索,输入(?字符串):按 n 键:跳转到下一个匹配的字符串,按 N 键:跳转到上一个匹配的字符串
?linux
  1. 直接定位到某个位置!
#直接定位到第100行
less + 100g xx . log
# 定位到最后一行
less + GG xx . log
  1. 只需要按 v 键,就会将正在阅读的文件在默认编辑器中打开,然后就可以对文件进行各种编辑操作了。

WC命令详解

wc(Word Count):统计指定文件中的字节数、字数、行数,并将统计结果显示输出

  1. -c 统计字节数。
  2. -l统计行数。
  3. -m统计字符数。这个标志不能与 -c 标志一起使用。
  4. -w统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

grep 统计日志时间 linux grep命令查看日志_grep 统计日志时间 linux_25

sort命令详解

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较(相同则比较下一个字符),最后将他们按升序输出。

这里可以看到10在2的前面,这是因为比较的是1<2,而不是比较10>2

grep 统计日志时间 linux grep命令查看日志_字符串_26

  1. -n表示按数字进行排序,默认是按ASCII码排序。可以看到不再是一个一个字符的比较了,而是把它当成一个整体来比较
  2. -u 输出行中去除重复行。可以看到两个20只留下了一个
  3. -r 表示降序,默认是升序
  4. grep 统计日志时间 linux grep命令查看日志_linux_27

  5. -t 使用符合将一行分为几个小块, -k 使用第几个小块进行比较,默认是第一个小块。-t-k一般都是搭配使用的。-k2,表示第二块,-k3,表示第三块,以此类推 -kn,表示第n块
    使用第二块字母排序

使用第三块数字排序

grep 统计日志时间 linux grep命令查看日志_grep 统计日志时间 linux_28

  1. 其他的sort常用选项
  1. -f 会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
  2. -c 会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
  3. -C 会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
  4. -M 会以月份来排序,比如JAN小于FEB等等
  5. -b 会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。