开发过程中,经常需要查找线上日志的错误,比如查看log4j日志。但是由于日志本身比较大,所以需要用linux过滤日志,定位报错误位置。常用的查看文本命令有less、cat、more、tail、grep、head等
more基于vi编辑器,在启动时就加载整个文件 然后一页一页分屏显示,方便操作者主页读取。more支持vi中的关键字操作。
参数
- -num 以此显示行数
- +num 从第num行还是显示
- +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
动作
- 按Space键:显示文本的下一屏内容
- 按Enter键:只显示文本的下n行内容,n默认为1
- 按H键:显示帮助屏,展示相关帮助信息
- 按B键:显示上n行内容,n默认值为1
- 按Q键:退出命令
- 按=键:输出当前行的行号
- 按:f:输出文件名和当前行的行号
命令实例
实例1:显示文件中从第三行起的内容
more +3 linux.log
实例2:从文件中查找第一个出现“day3”字符串的行,并从该出前两行开始显示输出
more +/day3 linux.log
$ more +/day3 linux.log
…跳过
2018-04-day1
2018-04-day2
2018-04-day3
实例3:列出文件过多时限制每次出现的个数 ll |more -5
#ls -l | more -3
总用量 32
lrwxrwxrwx. 1 root root 7 9月 20 09:47 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 9月 20 10:04 boot
这时,如果想下页在现实5条,则可以直接输入5然后按空格键,就会在输出5行。
less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。less在查看之前不会加载整个文件,适合查看比较大的文件,总的来说less是比较强大的。
动作
- 回车键 向下移动一行
- y 向上移动一行
- 空格键 向下滚动一屏
- b 向上滚动一屏
- d 向下滚动半屏
- h less 的帮助
- u 向上洋动半屏
- w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是 6,那就从第 7 行显示
- g 跳到第一行
- G 跳到最后一行
- p n% 跳到 n%,比如 10%,也就是说比整个文件内容的 10% 处开始显示
- /pattern 搜索 pattern ,比如 /MAIL 表示在文件中搜索 MAIL 单词
- v 调用 vi 编辑器
- q 退出 less
- !command 调用 SHELL,可以运行命令,比如! ls 显示当前列当前目录下的所有文件
常用参数
- -c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新
- -f 强制打开文件,二进制文件显示时,不提示警告
- -i 搜索时忽略大小写;除非搜索串中包含大写字母
- -I 搜索时忽略大小写,除非搜索串中包含小写字母
- -m 显示读取文件的百分比
- -M 显法读取文件的百分比、行号及总行数
- -N 在每行前输出行号
- -p pattern 搜索 pattern;比如在 /etc/profile 搜索单词 MAIL,就用 less -p MAIL /etc/profile
- -s 把连续多个空白行作为一个空白行显示
- -Q 在终端静音,去掉提示音
- +num 从指定行开始显示
常见用法
less -m -i -N linux.log
查看的时候屏幕显示行号、百分比并且搜索的时候不区分大小写
history | less +10
从第十行开始显示历史记录
cat是一个查看和连接文本的工具,通常和more搭配。但是两者不同的是,cat可以连接合并两个文件。查看而言,cat适用于较小的文本。因此不太适合查看线上的log。常见参数有:
- -n或-number:有1开始对所有输出的行数编号
- -b或–number-nonblank:和-n相似,只不过对于空白行不编号
- -s或–squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行
- -A:显示不可打印字符,行尾显示“$”
- -e:等价于"-vE"选项
- -t:等价于"-vT"选项
命令实例
cat m1
在屏幕上显示文件m1的内容
cat m1 m2
m1文件下面跟着显示m2的内容
cat m1 m2 > file
将文件m1和m2合并后放入文件file中
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
常用参数
- -n<数字>:指定显示头部内容的行数
- -c<字符数>:指定显示头部内容的字符数
- -v:总是显示文件名的头信息
- -q:不显示文件名的头信息
常见用法
head -n 行数值 文件名;
比如我们显示 linux.log前4行内容,可以:
head -n 4
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
常见用法
grep -E ‘at |Execption | exception | Caused by’ log.log
使用正则表达式,在日志中查找抛异常的行信息
grep match_pattern log.log
在日志中搜索一个单词,命令行返回一个包含该单词的文本行
grep "match_pattern" file_1 file_2 file_3 …
在多个文件中查找
grep "match_pattern" file_name –color=auto
标记匹配的颜色 –color=auto
grep -C10 pattern filename
查询关键字前后各十行
来源:https://juejin.im/post/5ba462edf265da0afc2bf9cf
作者:瑜戈