0%

[linux] 4.grep,tail等查看文件命令

读取文件之 tail 命令#

'tail' 命令 显示文件最后几行内容,读取log神奇。默认读取文件最后 10 行内容

1
tail <file name>  

1
$ tail log.txt  

'tail -n'#

语法

1
2
tail -n<number> <file name>  
# tail -n<行数> <文件名称>
如读取最后5行:
1
$ tail -n5 log.txt  

'tail -c' 选项#

tail -c 命令选项显示 文件以指定字符计数的最后内容

语法

1
2
tail -c<number> <file name>  
#tail -c<字符数> <文件名称>
如:
1
2
3
4
5
6
$ tail -c10 log.game*

==> log.game1 <==
028.76777
==> log.game2 <==
028.77236
显示 log.game为前缀 文件的 最后 10 个字符内容信息

'tail -f'#

1
tail -f log.test*

当前语句可以将 log.test1, log.test2等以 log.test 打头文件的 初始最后十行追加显示,这个是 看log神器

'tail -a'#

有时使用 grep命令会提示 "binary file matches .log"** 从提示可以看出,该文件是个二进制文本。

此时使用 -a参数接口。

1
grep -a test XXX.log

1
-a, --text equivalent to --binary-files=text,即让二进制文件等价于文本。

读取文件之 grep 命令#

-c 显示当前有多少条#

这个语句非常 necessary, 因为log太多时,查找可能会 爆内存,先看看log有多少条(配合tail -n100等语句使用)。

1
2
3
4
$grep "leo" ./log/log.ga* -c

./log/log.ga1:0
./log/log.ga2:175

需满足所有条件#

1
grep word1 file.txt | grep word2 |grep word3

满足任意条件#

1
grep -E "word1|word2|word3"   file.txt

搜索含有Track字段的log#

1
2
grep Trace log.txt
grep "Trace" log.txt

多文件查找#

1
grep Trace file_1 file_2 file_3 ...

输出除 Trace 之外的所有行 -v 选项:#

1
grep -v Trace file_name

标记匹配颜色 --color=auto 选项:#

1
grep "Trace" file_name --color=auto

使用正则表达式 -E 选项:#

1
2
3
grep -E "[1-9]+"

egrep "[1-9]+"

只输出文件中匹配到的部分 -o 选项:#

1
2
3
4
5
echo this is a test line. | grep -o -E "[a-z]+\."
line.

echo this is a test line. | egrep -o "[a-z]+\."
line.

统计文件或者文本中包含匹配字符串的行数 -c 选项:#

1
grep -c "Trace" file_name

输出包含匹配字符串的行数 -n 选项:#

1
2
3
grep "Trace" -n file_name

cat file_name | grep "Trace" -n

多个文件#

1
grep "Trace" -n file_1 file_2

打印样式匹配所位于的字符或字节偏移:#

1
2
3
echo gun is not unix | grep -b -o "not"
7:not
#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。

搜索多个文件并查找匹配文本在哪些文件中 -l:#

1
grep -l "Trace" file1 file2 file3...