可以查询文本内容,和查看日志
创建文本
创建新文件
[root@localhost temp]# touch a.txt
创建新文件并使用vi编辑文件
键盘输入[i]进入输入模式,键盘[Esc]退出出输入,键盘[:wq]保存退出
[root@localhost temp]# vi a.txt
在文件中写入测试数据
123
456
789
zhang
li
wang
q
w
e
r
t
y
cat
用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
cat会显示文件所有内容,使用-n参数,列出行号
[root@localhost temp]# cat -n a.txt
1 123
2 456
3 789
4 zhang
5 li
6 wang
7 q
8 w
9 e
10 r
11 t
12 y
tac
文件内容反向显示
[root@localhost temp]# tac a.txt
u
y
t
r
e
w
q
wang
li
zhang
789
456
123
more
more 命令和 cat 的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
参数:
- +n 从笫n行开始显示
- -n 定义屏幕大小为n行
- +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
操作:
- Enter:向下n行,需要定义。默认为1行
- Ctrl+F:向下滚动一屏
- 空格键:向下滚动一屏
- Ctrl+B:返回上一屏
- = :输出当前行的行号
- f :输出文件名和当前行的行号
- V :调用vi编辑器
- !命令 :调用Shell,并执行命令
- q :退出more
直接使用,百分比显示部分内容,输入数字再回车,会按百分比继续向下翻页
[root@localhost temp]# more a.txt
123
456
789
zhang
li
wang
q
w
e
r
t
y
u
i
o
--更多--(60%)
显示文件第2行起内容
[root@localhost temp]# more +2 a.txt
从文件查找第一个出现“123”字符串的行,并从该处前2行开始显示输出
[root@localhost temp]# more +/123 a.txt
less
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
参数:
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
操作:
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- b 向后翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一行
- 回车键 滚动一页
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
[root@localhost temp]# less a.txt
head
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
显示前3行内容
[root@localhost temp]# head -3 a.txt
tail
显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
参数:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示行数
- –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
查看倒数3行内容
[root@localhost temp]# tail -3 a.txt
循环查看文件内容,可以看到正在更新的内容
[root@localhost temp]# tail -f a.txt
grep
一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
参数:
- -c 计算找到‘搜寻字符串’(即 pattern)的次数
- -i 忽略大小写的不同,所以大小写视为相同
- -n 输出行号
- -v 反向选择,打印不匹配的行
- -r 递归搜索
- –color=auto 将找到的关键词部分加上颜色显示
按字符串查询,会显示匹配结果的行,并标红色关键字
[root@localhost temp]# grep "123" a.txt
123
同样效果
[root@localhost temp]# cat a.txt | grep "23"
123
反选,将文件没有错出现“2”和“a”的行打印出来
[root@localhost temp]# grep -v "2" a.txt | grep -v "a"
综合使用
从指定目录查找所有扩展名为 .txt的文本文件,并找出包含 “li” 的行,并显示之后的5行:
[root@localhost backup]# find /myfile/ -name "*.txt" | xargs grep -A 5 "li"
/myfile/backup/a.txt:li
/myfile/backup/a.txt-wang
/myfile/backup/a.txt-q
/myfile/backup/a.txt-w
/myfile/backup/a.txt-e
/myfile/backup/a.txt-r
--
/myfile/backup/b.txt:lisi
/myfile/backup/b.txt-wange
--
/myfile/a.txt:li
/myfile/a.txt-wang
/myfile/a.txt-q
/myfile/a.txt-w
/myfile/a.txt-e
/myfile/a.txt-r
--
/myfile/temp/a.txt:li
/myfile/temp/a.txt-wang
/myfile/temp/a.txt-q
/myfile/temp/a.txt-w
/myfile/temp/a.txt-e
/myfile/temp/a.txt-r
--
/myfile/b.txt:li si wang er
/myfile/b.txt-zhangsan
/myfile/b.txt-
/myfile/b.txt:lisi
/myfile/b.txt-
/myfile/b.txt-wanger
/myfile/b.txt-
/myfile/b.txt-zhao
/myfile/b.txt:qian sun li zhou wu zheng wang
/myfile/b.txt-
查找指定日期的日志
$grep '20:[1-5][0-9]:' *.log #匹配当前目录下搜索log日志中,20点的日志
$grep '20:[1-5][0-9]' 1.log 2.log 3.log #指定在这三个文件中查找
$grep '20:[1-5][0-9]:' *.log | grep -v '20:[3-4][0-9]:' # -v反向选择,相当于过滤
$grep 'ab|bc' *.log #支持|语法,匹配含有ab或者bc的文本行
#系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)
grep -n '2019-10-24 00:01:11' *.log