查询大文件最后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'
-A可以想象为 "After",在英文里面 "After" 的意思是“之后”,所以-A5就表示匹配行之后的5行。-B可以想象为 "Before",在英文里面 "Before" 的意思是“之前”,所以-B5就表示匹配行之前的5行。-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 文件的特性,它永远不包含任何数据,因此这个命令不会有任何输出。这个命令经常被用来清空其他文件的内容