#查询日志:linux查看日志文件内容命令sed、cat、tac、more、less、head、tail、echo
1、按时间查询
sed -n '/2017-09-20 14:00:/,/2017-09-20 15:00:]/p' catalina.out
2、按时间查询并将查询结果保存到指定文件
sed -n '/2017-09-20 14:00:/,/2017-09-20 15:00:]/p' catalina.out> catalina.out.201709201415
sed -n '/2017-09-20 14:00:/,/2017-09-20 15:00:]/p' catalina.out> catalina.out.201709201415
3、按关键字查询,输出当前这个日志的前后几行(显示关键字上下文)
cat catalina.out| grep -C 5 '失败' #显示file文件里匹配foo字串那行以及上下5行
cat catalina.out | grep -B 5 '失败' #显示foo及前5行
cat catalina.out | grep -A 5 '失败' 显示foo及后5行
4、如何显示一个文件的某几行(中间几行)
cat filename | tail -n +3000 | head -n 1000 #从第3000行开始,显示1000行。即显示3000~3999行
cat filename | head -n 3000 | tail -n +1000 #显示1000行到3000行
*注意两种方法的顺序
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
用sed命令
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。
例:cat mylog.log | tail -n 1000 #输出mylog.log 文件最后一千行
======================================================================================
1、cat命令:
功能:
1)一次显示整个文件。$ cat filename
2)从键盘创建一个文件。$ cat > filename
只能创建新文件,不能编辑已有文件.
3)将几个文件合并为一个文件: $cat file1 file2 > file
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。
cat -b textfile1 textfile2 >> textfile3
把test.txt文件扔进垃圾箱,赋空值test.txt
cat /dev/null > /etc/test.txt
注意:>意思是创建,>>是追加。千万不要弄混了。
------------------------------------------
tac (反向列示)
tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上,
而 tac 则是由最后一行到第一行反向在萤幕上显示出来!
--------------------------------------------------------------------------------------------------------
2、more命令:
以百分比的形式查看日志。
3、less命令:
跟more功能差不多,只不过less支持前后翻阅文件。
4、head命令:
功能:从文本文件的头部开始查看,head 命令用于查看一个文本文件的开头部分。
示例如下:
head example.txt 显示文件 example.txt 的前十行内容;
head -n 20 example.txt 显示文件 example.txt 的前二十行内容;
head详解:
-n 指定你想要显示文本多少行。
-n number 这个参数选项必须是十进制的整数,它将决定在文件中的位置,以行为单位。
-c number 这个参数选项必须是十进制的整数,它将决定在文件中的位置,以字节为单位。
5、tail命令:
功能:tail 命令用于显示文本文件的末尾几行。
示例如下:
tail example.txt 显示文件 example.txt 的后十行内容;
tail -n 20 example.txt 显示文件 example.txt 的后二十行内容;
tail -f example.txt 显示文件 example.txt 的后十行内容并在文件内容增加后,自动显示新增的文件内容。
tail -n 50 -f example.txt 显示文件 example.txt 的后50行内容并在文件内容增加后,自动显示新增的文件内容。
注意:
最后一条命令非常有用,尤其在监控日志文件时,可以在屏幕上一直显示新增的日志信息。
tail详解:
-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。
-c Number 从 Number 变量表示的字节位置开始读取指定文件。
-f 如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),
那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续
从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定 File 参数,
并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另一个进程正在写入的文件的增长。
-k Number 从 Number 变量表示的 1KB 块位置开始读取指定文件。
-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。
-n Number 从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件。如果文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有
与 -n 标志一起时才有效。否则,就会将其忽略。
------------------------------------------
在Linux中echo命令用来在标准输出上显示一段字符,比如:
echo "the echo command test!"
这个就会输出“the echo command test!”这一行文字!
echo "the echo command test!">a.sh
这个就会在a.sh文件中输出“the echo command test!”这一行文字!
该命令的一般格式为: echo [ -n ] 字符串其中选项n表示输出文字后不换行;字符串能加引号,也能不加引号。
用echo命令输出加引号的字符串时,将字符串原样输出;
用echo命令输出不加引号的字符串时,将字符串中的各个单词作为字符串输出,各字符串之间用一个空格分割。