cat -E 显示行结束符$
-n 对显示出的结果加行号
-A 显示所有控制符
-b 非空行编号
-s 压缩连续的空行成一行
tac 反向显示结果(多行)
rev 反向显示结果(同一行)
more 分页显示
less 分页显示,功能较多
head 前几行,默认前10行
-n# 显示前#行
-c# 显示前#个字节
-# 显示第#行
tail 后几行,默认前10行
-f 跟踪显示文件新追加的内容,常用在日志监控(文件删除后不会提示)
-F 跟踪文件名(文件删除后会提示)
tailf 类似tail -f,当文件不增长是并不访问文件
按列提取文本
cut -d 指定分隔符,默认tab
-f# 提取第#列,配合-d使用
-c# 提取第#个字符
-b# 提取第#个字节
--output-delimiter= 指定输出分隔符
合并两个文件同行号的列到一行
paste -d 指定分隔符,默认tab
-s 所有行合成一行显示
tr 转换和删除字符
-c 去字符集的补集,取反
-d 删除所有属于第一个字符集的字符
-s 删除连续重复字符
分析文本工具
文本数据统计:wc
输出结果:行 单词 字节 文件名
-l 统计行数
-c 统计字节数
-w 统计单词数
-m 统计字符数
-L 输出文本中最长的字符数
文本排序:sort -r 反方向排序
-R 随机排序
-n 按数字大小排序
-f 忽略大小写排序
-u 删除输出中的重复行
-t 指定分隔符
-k# 以#列排序
uniq 合并重复的行
-c 显示每行重复的次数
-d 仅显示重复的行
-u 仅显示不重复的行
注:连续且完全相同才算重复
diff 比较文件内容的不同
-u 显示更全面
patch 跟diff配合使用,恢复文件
-b 自动备份改变了的文件
例子:
diff -u f1 f2 > f3
patch -b f1 f3
grep 过滤字符
-f file 跟文件内容匹配
-v 显示不匹配的行
-i 忽略大小写
-n 显示匹配的行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出信息
-A# 后#行,after
-B# 前#行,before
-C# 前后各#行,context
-w 匹配整个单词
-e 实现多个选项间的逻辑or关系 grep -e 'cat' -e 'dog'
-E =egrep支持正则表达式
-F =fgrep只能找固定的文本
练习:
df | tr -s ' ' |cut -d ' ' -f5
提取网卡里面的IP地址
centos6
ifconfig eth0 | head -n2 | tail -n1 |tr -s ' ' : | cut -d ':' -f4
centos7
ifconfig eno16777736 | head -n2 | tail -n1 |tr -s ' '|cut -d ' ' -f3
提取用户名和UID,并以UID由大到小排序
cut -d: -f1,3 /etc/passwd |sort -t: -k2 -nr
统计访问次数最多的前15个IP地址
cat /var/log/httpd/access_log |cut -d' ' -f1 |sort |uniq -c |sort -nr |head -n15
正则表达式
提取网卡里面的IP地址
ifconfig eno16777736 |grep -o "[0-9.]\{7,\}" |head -n1
ifconfig eno16777736 |grep -o "[[:digit:]]\{1,3\}[.][[:digit:]]\{1,3\}[.][[:digit:]]\{1,3\}[.][[:digit:]]\{1,3\}" |head -n1
ifconfig eno16777736 |grep -o "inet [0-9]\+"
取分区利用率
df |grep "/dev/sd" |grep -o "[0-9]\{1,3\}%" |grep -o "[^%]\+" |sort -nr |head -n1
过滤空行
grep -v "^[[:space:]]*$" file
取系统版本号
grep -o "[[:digit:]]\+" /etc/centos-release |head -n1
取用户名、UID、SHELL
grep -Ew "^(root|wang|abc)" /etc/passwd |cut -d":" -f1,3,7