用户工具

站点工具


log_analysis

**这是本文档旧的修订版!**

查看日志常用工具介绍

说明

工程部解决学校故障和测试时,日志分析是一项基本技能。分析日志常用的linux文本处理小工具就必须要掌握。这里分享一些小工具的使用方法。

## 1. grep工具

grep是行过滤具;用于根据关键字进行行过滤。

语法和选项

语法:

# grep [选项] '关键字' 文件名

常见选项:

OPTIONS:
      -i:不区分大小写
      -v:查找不包含指定内容的行,反向选择
      -w:按单词搜索
      -o:打印匹配关键字
      -c:统计匹配到的次数
      -n:显示符号
      -r:逐层遍历目录查找
      -A:显示匹配行及后面多少行
      -B:显示匹配行及前面多少行
      -C:显示匹配行及前后多少行
      -l:只列出匹配的文件名
      -L:列出不匹配的文件名
      -e:使用正则匹配
      -E:使用扩展正则匹配
      ^key:以关键字开头
      key$:以关键字结尾
      ^$:匹配空行
      --color=auto:可以将找到的关键字部分加上颜色的显示

颜色显示:

临时设置:
# alias grep='grep --color=auto'     //只针对当前终端和当前用户生效
永久设置:
vim /etc/bashrc
alias grep='grep --color=auto'
source /etc/bashrc
以上永久设置是指的全局设置,即对所有用户生效,如果要只对特定用户生效,则只在用户文件下的/home/xxx/.bashrc文件加上上述命令即可。

举例说明:

说明:以 /etc/passwd 文件为例来说明该工具的使用

# grep -i root passwd      忽略大小写匹配包含root的行
# grep -w ftp passwd       精确匹配ftp单词
# grep -wo ftp passwd      打印匹配到的关键字ftp
# grep -n root passwd      打印匹配到的关键字的行号
# grep -ni root passwd     忽略大小写匹配统计包含关键字的行
# grep -nic root passwd    忽略大小写匹配统计包含关键字的行数
# grep -i ^root passwd     忽略大小写匹配以root开头的行
# grep bash$ passwd        匹配以bash结尾的行 
# grep -n ^$ passwd        匹配空行并打印行号
# grep -v ^# passwd        匹配不以#开头的行
# grep -A 5 mail passwd    匹配包含mail关键字及其后5行
# grep -B 5 mail passwd    匹配包含mail关键字及其前5行
# grep -C 5 mail passwd    匹配包含mail关键字及其前后5行

2. cut工具

cut是列截取工具;用于列的截取

语法与选项

语法:

# cut [选项] 文件名

常见选项:

-c: 以字符为单位进行分割,截取
-d: 自定义分隔符,默认为制表符\t
-f: 与-d一起使用,指定截取哪个区域

举例说明:

# cut -d: -f1 1.txt          以“:”分割,截取第1列内容
# cut -d: -f1,6,7 1.txt      以“:”分割,截取第1,6,7列内容 
# cut -c4 1.txt              截取文件每行第4个字符
# cut -c1-4 1.txt            截取文件每行第1-4个字符
# cut -c4-10 1.txt           截取文件中每行的4-10个字符
# cut -c5- 1.txt             从第5个字符开始截取后面所有字符

3. sort工具

sort工具用于排序,它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

语法与选项:

-u: 去除重复行
-r: 降序排列,默认是升序
-o: 将排序结果输出到文件中,类似重定向符号>
-n: 以数字排序,默认是按字符排序
-t: 分隔符
-k: 第N列
-b: 忽略前导空格
-R: 随机排序,每次运行的结果均不同

举例说明:

# sort -n -t: -k3 1.txt    在1.txt文件中:分隔开以第三列以数字升序排列
# sort -nu 1.txt           按数字排序并去重
# sort -n 1.txt -o 2.txt   按数字排序并把结果重定向到文件2.txt
# sort -R 1.txt            随机排序,每次运行的结果均不同

4. uniq工具

uniq工具用于去除连续的重复行

常见选项:

-i: 忽略大小写
-c: 统计重复行重重次数
-d: 只显示重复行

举例说明:

# grep 'xxx' xx.txt | sort | uniq -c    常见uniq与sort配合使用,先对文本内容进行排序,排序以后再进行重复统计,这个在测卡的时候非常实用。

5. tee工具

teea工具是从标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)
选项:
-a: 双向追加重定向
举例说明:
xiarong@Demo:~$ echo 999 |tee 1.txt        //覆盖
999
xiarong@Demo:~$ cat 1.txt
999
xiarong@Demo:~$ echo 888 | tee -a 1.txt    //追加
888
xiarong@Demo:~$ cat 1.txt 
999
888

6. wc工具

wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,我们经常用来统计行数以达到统计数量的目的。
常见用法:
# wc -l 1.txt   统计行数
# xiarong@Demo:~$ wc -l /etc/passwd
  96 /etc/passwd

掌握了以上内容,对进行一些简单的日志分析可以带来方便,如果能掌握sed与awk两个命令,将会更加如虎添翼。

log_analysis.1581588704.txt.gz · 最后更改: 2020/02/13 18:11 由 xiarong