linux日志查看常用指令
linux日志查看常用指令
sort
排序.
假设有一個 test.txt 如下,
1 | |
预设是看最前面排序.
1 | |
反向可以加上 -r, --reverse reverse the result of comparisons
1 | |
也可以搭配其他指令使用, 像是
1 | |
指定栏位下去排序.
1 | |
-n, --numeric-sort 代表使用数字下去排序.
-k, --key=KEYDEF 代表指定栏位排序. 这边指定第二個栏位.
这边多补充一下,如果是像上面空格隔开,不用特别设置(因为默认)。
如果今天你的文件如下,是用逗号隔开的,
需要多加上 -t 设置你的分隔符号。
-t, --field-separator=SEP use SEP instead of non-blank to blank transition.
test2.txt 如下,
1 | |
1 | |
通过 -t 设计使用 , 当作分隔符号.
uniq
用來找出(刪除)重复的行.
1 | |
需注意, 使用 uniq 的時候, 请先执行 sort.
因为 uniq 是去找临近的行做比较而已, 所以你必须先 sort 再进行uniq.
( 上面说明中也有说 uniq 不侦测重复的行, 除他们是临近的 )
示例 test.txt 如下,
1 | |
如果你沒有先执行 sort, 直接执行 uniq, 你会发现是無效的,
1 | |
將日志內重复的行去掉,
1 | |
也可以使用 sort -u 代替,
1 | |
-u, --unique with -c, check for strict ordering.
计算行出现的次数,
1 | |
-c, --count prefix lines by the number of occurrences.
如果你有空白行, 可以加上 sed 指令去掉空白行(如下範例)
1 | |
输出重复的行,
1 | |
-Dprint all duplicate lines
只输出重复的行 (只展示一次),
1 | |
-d, --repeated only print duplicate lines, one for each group
只输出重复的行 ,
1 | |
-u, --unique only print unique lines
grep
1 | |
加上 --color 可以把关键字加上顏色, 展示更清楚.
1 | |
加上 -C, 代表要多展示头尾的行數,
1 | |
也可以一次搜索多个文档日志
1 | |
也可以使用 星号 *
1 | |
排除某個字
1 | |
-v, --invert-match select non-matching lines
如果想要排除某些字元又要搜索某些字元,
可以依照需求如下使用,
1 | |
搜索当下目录资料夾內容
1 | |
case insensitive case (不區分大小寫)
1 | |
展示行数
1 | |
要完全符合 :80 才會被捞出來
1 | |
-w, --word-regexp 仅比较整個单词.
或操作
grep -E ’123|abc’ filename // 找出文件(filename)中包含123或者包含abc的行( -E 选项可以用来扩展选项为正则表达式)
egrep ’123|abc’ filename // 用egrep同样可以实现
awk ’/123|abc/’ filename // awk 的实现方式
与操作
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
sed
这个指令可以达到快速搜索,取代,删除文字
sed 主要是针对行进行处理, 然后处理的不是原文件, 而是复制出來的文件.
语法
1 | |
-i 加上这个才會写入你的 textfile, 不然只会展示在 terminal 上.
刪除 empty lines
1 | |
刪除有数字 7 的行
1 | |
刪除第一到第五行
1 | |
刪除从 hello1 到 hello2 之间的所有行
1 | |
替换语法
1 | |
将每行出现的第一個 a 替换成 A
1 | |
將每行出現的全部的 a 替换成 A
1 | |
g 代表替换所有匹配字串
只印出有 test 的行
1 | |
-n, --quiet, --silent suppress automatic printing of pattern space.
p Print the current pattern space.
sed 也可以印出文件指定行,
1 | |
展示特定行, 展示第 5 行
1 | |
展示第 3 行以及第 5 行
1 | |
1 | |
add the script to the commands to be executed
展示第 3 行到第 5 行
1 | |
展示第 1 行到第 3 行, 以及第 5行
1 | |
awk
这个指令是一個非常強大的文字分析工具
假设今天我们的输出如下
把第 2,3,5,9 列輸出
1 | |
如果觉得丑, 可以用 printf 來排版
1 | |
接过试着来过滤资料,
把 权限分数(第2列)分数是 2 以及 第3列是 twtrubiks 的取出来。
1 | |
$0 代表整行的所有內容.
还可以进行统计,
把 权限分数(第2列)的分数进行 sum(排除 total)。
先排除掉第一列是 total 字符串的资料,
my_sum 是我们定义的变量。
1 | |
也可以编写 if 逻辑,
把 权限分数(第2列)的分数为 3 的过滤出来,
接着打印出当前行数,并把第9列的文件名称转为大写。
1 | |
NR current record number in the total input stream.
NF number of fields in the current record.
示例 test.txt
1 | |
目前的 field 数量,
1 | |
最后一個 field,
1 | |
示例第一個 field,
1 | |
