1.在Linux系统中如何统计某个字符串出现的次数

1
2
3
4
5
grep -o targetStr filename | wc -l(单个字符串)
"targetStr"可以不加引号
grep -o targetStr_1\|targetStr_2\|targetStr_3…… filename | wc -l
"targetStr_1"这些必须加引号
但是上面的方法是不准确的,因为wc -l只是显示行数,如果一行字符串多次出现,那么结果不准确

2.Linux查看日志的几种命令

1. tail 查看实时变化的日志(比较吃内存)

退出tail命令:Ctrl+c

-f 循坏读取
-q 不显示处理信息
-v 显示详细的处理信息
-c <数目> 显示的字节数
-n 显示行数 (相当于nl命令)
-pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q,-quiet,-slient 从不输出给出文件名的首部
-s, –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
用法 作用
1. tail -f filename 默认最后10行,相当于增加参数 -n 10
2. tail -n 20 filename 显示filename最后20行
3. tail -n +5 filename 从第5行开始显示文件

2. cat命令

cat命令搜索关键字附近的日志

常用用法:

查看log.log前200行

cat log.log | head -n 200

查看test.log倒数200行

cat test.log | tail -n 200

查看test.log中包含http的所有行

cat test.log | grep "http"

查看test.log中包含http的所有行,并显示前后行

cat -n test.log | grep -C 5 “http” (匹配字串那行以及前后5行)

cat -n test.log | grep -B 5 “http” (匹配字串那行以及前5行)

cat -n test.log | grep -A 5 “http” (匹配字串那行以及后5行)

3. grep命令

grep命令,文本搜索命令,可以使用正则表达式搜索文本
用法示例:

查看test.log中包含http的所有行(-i忽略大小写)

1
grep -i "http" ./test.log

4. sed命令

SED 查看某时间段日志

1
sed -n '/2022-06-02 13:10:30/,/2022-06-02 13:10:40/p' test.log

某时间端日志输出到指定文件中

1
sed -n '/2022-06-02 13:10:30/,/2022-06-02 13:10:40/p' test.log > test20220602.log

当然还可以使用vi文本编辑命令,less或者more命令进行查看

正向查找:

1
/关键字 按n键把光标移动到下一个符合条件的地方

反向查找:

1
?关键字  按shift+n 键,把光标移动到下一个符合条件的

日志文件本身还是一个文件,检索命令,编辑命令,查找命令都是可以进行操作的。