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 |
|
-D
print 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 |
|