# 查看日志常用工具介绍 ===== 说明 ===== >工程部解决学校故障和测试时,日志分析是一项基本技能。分析日志常用的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两个命令,将会更加如虎添翼。**