type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 14, 2023 01:34 PM
Parent item
领域
重定向
标准输入输出流:
- 输入流:系统设备号是
0
- 输出流:系统设备号是
1
- 错误输出流:系统设备号是
2
- 输出和错误重定向:
ls -al > out.log 2>&1
把ls命令输出重定向到文件out.log:错误信息重定向到输出流,再重定向到文件out.log
- 输出和错误重定向追加:
ls -al >> out.log 2>&1
- 后台运行日志重定向:
命令结果处理
- 排序:
sort
。倒排:sort -r
- 去重:
uniq
- 第一次
awk
我们将第 4 列的日期和第 1 列的ip
地址拼接在一起; next
关键字是提醒awk
跳转到下一行输入。 对每一行输入,awk
会根据第 1 列的字符串(也就是日期)进行累加;END
关键字代表一个触发器,就是 END 后面用 {} 括起来的语句会在所有输入都处理完之后执行——当所有输入都执行完,结果被累加到uv
中后,通过foreach
遍历uv
中所有的key
,去打印ip
和ip
对应的数量;
去重并统计数量:针对nginx日志(第1列是IP)统计总访问人数:
awk '{print $1}' access.log | sort | uniq | wc -l
去重并统计重复的数量:针对nginx日志(第四列是日期)统计每天的总访问量:
awk '{print $4, 2, 11}' access.log | sort | uniq -c
去重并分类统计重复的数量:针对nginx日志(第四列是日期)统计每天的用户访问量:
- 筛选:
grep
。不包含:grep -v
- 统计行数:统计go文件的代码总行数:
wc
实例:统计PV:对nginx的日志文件统计行数:
- 不影响结果的情况下保存中间结果:
tee
Xargs:向其他命令动态传递参数
把管道或标准输入流的数据,按照分隔符进行拆分,然后作为参数送给后面的命令。
常用参数
-I
,为xargs分割后的每项指定变量名称,默认是 {},在接下来的命令中使用{}代替传递过来的参数。
-d delim
:指定分隔符。
-n num
:传递给命令的参数个数,默认是用所有的。
-a file
:从文件中读入作为stdin
-t
:表示先打印命令,然后再执行。
-0
:指定输入项以空字符而不是空格分隔。当处理包含空格或其他特殊字符的文件名时,这非常有用。例如,find . -name '*.txt' -print0 | xargs -0 command
将在所有以 .txt 结尾的文件上执行 command。