文本处理工具
cut(实用)
取出文件中的列
cut 列分隔符 指定列 文件名
cut -d: -f1,3 /etc/passwd
cut -d: -f1,3-5 /etc/passwd
df -h | cut -c34-38
取出磁盘使用量
按字符位数进行剪切
取出ip地址(方法很多)
ifconfig| head -n 2|tr -s " " "%"|cut -d% -f3|tail -n 1
past
多文件合并
-d 指定分割符号
-s 所有合成一行
多文件行行合并
wc(实用)
统计文本数据
-l 统计行数
-c 字符
-w 字节
-L 找出文件最长的一行
wc 文件名
输出格式:默认统计 行数 单词数 字节数
统计nginx被访问的次数
wc -l /var/log/nginx/access_log
sort
根据文件某列进行排序默认以数字大小排序
-n 按照数字大小进行排序
-t 列使用的分割符号
-k 对哪一列排序
-u 去除重复数据
实战应用(面试):
sort -n -t: -k 3 /etc/passwd 升序按照uid排序
sort -nr -t: -k 3 /etc/passwd 降序按照uid排序
cut -d: -f1-4 /etc/passwd | sort -n -t: -k 3 按照uid 进行 升序排序
df -h | tr -s " " "%"|cut -d % -f5|tail -n -5 |sort -nr 磁盘占用最高
sort -u 将相邻行重复数据去除
uniq
使用前都须先排序
uniq file 将相邻的重复行去重
uniq -u 只显示不重复的行
uniq -d 只显示重复行
uniq -c 显示出现重复次数
实战案例(面试)
取出2个文件相同的行
cat 3.txt 4.txt |sort | uniq -d
取出2个文件不相同的行
cat 3.txt 4.txt |sort | uniq -u
取出访问nginx次数最多的5台主机的ip地址
cat /var/log/nginx/access.log-20210827 | cut -d " " -f 1| uniq -c|sort -nr |head -n 5
案例:此处结合前面工具对本地环境open stack 控制节点主机ssh 连接次数进行了降序统计:
ss -nt | tr -s " " ":"|cut -d : -f6|tail -n +2|sort|uniq -c|sort -rn
如图:
可以看到ip 172.16.10.105 ssh连接了360次
注意:如果是公网环境下的统计,访问次数异常,那么有可能是服务器遭受到攻击
diff(了解)
比较2个文件的不同
-u 详细比较
案例:
cat 3.txt
213
1241
12321
1231
12421
cat 4.txt
213
1241
12321
1231
12321
比较2个文件
diff -u 3.txt 4.txt
--- 3.txt 2021-08-27 07:55:49.214116095 +0000
+++ 4.txt 2021-08-27 07:56:10.724693435 +0000
@@ -2,4 +2,4 @@
1241
12321
1231
-12421
+12321
命令给出建议文件一 删除12421 替换为12321 就能让2个文件一样
那么可以将得出的结果定向到一个新文件
diff -u 3.txt 4.txt > diff.log
然后删除4.txt
通过不同点找回文件3.txt
patch -b 3.txt diff.log
cmp
二进制文件比较