Linux日志命令

196 阅读2分钟

查询大文件最后10行

tail -n 10 access.log

查询大文件倒数10行的前3行

tail -n 10 access.log | head -n 3

-n: number

查看某个关键词出现的次数

tail -n 10 access.log | grep -o 'John' | wc -l

wc 是 "word count" 的缩写,用于统计文字的行数、字数或字符数。其中的 -l 选项代表 "lines",也就是行数 -o 或 --only-matching 选项意味着只输出文件中与模式完全匹配的部分,而不是整行

过滤要查询的日志文件

tail -n 10 access.log | grep -i 'filter'

-i 或者 --ignore-case 选项,它可以让 grep 在搜索时不区分大小写, 不加-i就是完全匹配

查询不包含关键词的行

grep -v "hello" file.txt

-v 或者 --invert-match 选项用来选取不匹配指定模式的行

过滤的关键字前后5行

# 后5行
tail -n 10 access.log | grep -A5 'filter'
# 前5行
tail -n 10 access.log | grep -B5 'filter'
# 前后5行
tail -n 10 access.log | grep -C5 'filter'
  1. -A 可以想象为 "After",在英文里面 "After" 的意思是“之后”,所以 -A5 就表示匹配行之后的5行。
  2. -B 可以想象为 "Before",在英文里面 "Before" 的意思是“之前”,所以 -B5 就表示匹配行之前的5行。
  3. -C 可以想象为 "Context" 或者 "Center",在英文里面 "Context" 的意思是“上下文”,"Center" 是中心的意思,所以 -C5 就表示匹配行的前后5行

某行日志太长只想看前1到20个字符

cat a.log | head -n 1 | cut -c 1-20

cut 是一个用于剪切和处理文本数据的工具。-c 选项表示通过字符(Character)来进行剪切。

查询压缩过的文件

zcat a.tar.gz | grep -a 'John'

zcat 是一个在 Unix/Linux 系统中用于读取压缩文件的命令。zcat 与 cat 命令的功能相似,区别在于 zcat 可以直接读取 .gz 格式(gzip压缩)的文件,而无需先解压 可以将 -a 联想到 "all" 或者 "any type",即不论任何类型(包括二进制类型)的文件都当作文本进行处理

清空文件内容

cat /dev/null > file.txt

/dev/null 是一个特殊的文件,用于丢弃所有写入它的数据(在Unix和Linux系统中,被称为"null device")。当你执行 cat /dev/null 命令时,实际上是在尝试读取 /dev/null 文件的内容。由于 /dev/null 文件的特性,它永远不包含任何数据,因此这个命令不会有任何输出。这个命令经常被用来清空其他文件的内容