查询日志
jq
可以识别日志中的json。
安装:
brew install jq
使用方式
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}12312
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}123
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
head 1.log| jq ".user_id"
# 以下为执行结果
123123123
jq: error (at <stdin>:1): Cannot index number with string "user_id"
123123123
123123123
123123123
jq: error (at <stdin>:4): Cannot index number with string "user_id"
123123123
123123123
123123123
123123123
123123123
cut
使用方式
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
eg
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}12312
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}123
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":10, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
head 1.log| cut -d ':' -f 2
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
"xxx", "age"
head 1.log| cut -b 1-7
{"name"
{"name"
{"name"
{"name"
{"name"
{"name"
{"name"
{"name"
{"name"
sort
使用方式
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-u 意味着是唯一的(unique),输出的结果是去完重了的。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
–help 显示帮助。
–version 显示版本信息。
[-k field1[,field2]] 按指定的列进行排序。
eg
{"name":"xxx", "age":11, "user_id": 123123121, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":12, "user_id": 123123122, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":13, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":14, "user_id": 123123124, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":15, "user_id": 123123125, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":16, "user_id": 123123126, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":17, "user_id": 123123127, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":18, "user_id": 123123128, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":19, "user_id": 123123129, "profile": "xxxxxxxx.jpg"}
head 1.log| jq ".user_id" | sort
123123121
123123122
123123123
123123124
123123125
123123126
123123127
123123128
123123129
head 1.log| jq ".user_id" | sort -r
123123129
123123128
123123127
123123126
123123125
123123124
123123123
123123122
123123121
uniq
-c或–count 在每列旁边显示该行重复出现的次数。
-d或–repeated 仅显示重复出现的行列。
-f<栏位>或–skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或–skip-chars=<字符位置> 忽略比较指定的字符。
-u或–unique 仅显示出一次的行列。
-w<字符位置>或–check-chars=<字符位置> 指定要比较的字符。
–help 显示帮助。
–version 显示版本信息。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)
eg
{"name":"xxx", "age":11, "user_id": 123123121, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":12, "user_id": 123123122, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":11, "user_id": 123123123, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":14, "user_id": 123123124, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":13, "user_id": 123123125, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":13, "user_id": 123123126, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":12, "user_id": 123123127, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":11, "user_id": 123123128, "profile": "xxxxxxxx.jpg"}
{"name":"xxx", "age":12, "user_id": 123123129, "profile": "xxxxxxxx.jpg"}
head 1.log| jq ".age" | sort | uniq -c
3 11
3 12
2 13
1 14