文本处理工具简单介绍
1、文本文件查看
cat 可以查看文本内容
nl 可以在查看文本同时显示文本行号
tac 逆向显示文本内容
rev 将同一行内容逆向显示
非文本文件查看可以用: hexdump -C 或者 cmp(可查看二进制文件的不同)
分页查看more,less
more
-d: 显示翻页及退出提示
less
/文本 搜索文本
n/N 跳到下一页或上一页
显示文本前面或后面的行内容
head 显示文件或标准输入的前面行
-c # 指定获取前#字节
-n # 获取前几行
tail 与 head 相反
-c # 获取后#字节
-n # 获取后几行
-f 跟踪显示文件在执行查看后新追加内容,常用语日志文件
抽取文本cut
-d @ 指明分隔符
-f # 按#字段分隔
-c 按字符分隔
举例应用:取分区利用率
[16:18:47 @rocky2[ ~]#df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 977516 0 977516 0% /dev
tmpfs 996008 0 996008 0% /dev/shm
tmpfs 996008 8884 987124 1% /run
tmpfs 996008 0 996008 0% /sys/fs/cgroup
/dev/sda2 104806400 2866808 101939592 3% /
/dev/sda1 2086912 169328 1917584 9% /boot
/dev/sda5 52403200 428776 51974424 1% /data
tmpfs 199200 0 199200 0% /run/user/0
[16:18:54 @rocky2[ ~]#df|tail -n8 |tr -s ' '|cut -d ' ' -f5|sort -r|head -n1
9%
合并文件
paste
-d # 指定分隔符
-s 所有行合成一行
2、分析文本
文本统计数据 wc
-l 只统计行数
-w 只统计单词总数
-c 只统计字节总数
-L 显示文件中最长行的长度
文本排序 sort
-r 倒序
-R 随机排序
-n 执行按数字大小整理
-h 人类可读排序,2k
-t c 选择c用于字段界定符
-k # 选择使用c字符分隔的#列来整理能够使用多次
去重uniq
-c: 显示每行重复出现的次数
-d; 仅显示重复的行
-u: 仅显示不曾重复的行 常和 sort 使用
举例:统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
[@rocky2[ ~]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 36 10.0.0.170:22 10.0.0.1:52419
[@rocky2[ ~]#ss -nt|tail -n+2 |tr -s ' ' : |cut -d: -f6|sort|uniq -c|sort -nr|head -n2
1 10.0.0.1
3、文本处理三剑客
grep 文本搜索工具
-v 取反
-i 忽略大小写
-n 显示匹配的行号
-c 统计匹配的行数
-q 不输出任何信息,静默模式
-e 相当于or,多个选项使用
-E 相当于egrep
-r 递归目录,但不处理软链接
-R 递归目录,处理软链接
举例:取分区利用率
df | grep '^/dev/sd'|grep -oE '\<[0-9]{,3}%'|tr -d '%'|sort -rn|head -n1
sed
常用选项
-n 取消自动打印(默认带有自动打印)
-e 多点编辑,相当于or
-r 使用扩展正则表达式
-i.bak 备份文件并在原文编辑
!注意 -ir 不支持该写法, -ni 会清空文件
定位格式
1.不给地址:对全文进行处理
2.单地址:
#:指定的行,$:最后一行
/xxx/:被此处模式能够匹配到的每一行
3.范围:
#,# 从第几行到第几行
#,+# 从第几行到+几行
查找替换
s/xxx/xxx/修饰符 查找替换使用分隔符,可换成#@
g 行内全局替换
p 显示替换成功的行
i 忽略大小写
sed可结合后向引用和正则表达式来灵活使用
举例:取ip地址
[@rocky2[ ~]#ifconfig |sed -nr "2s/[^0-9]+([0-9.]+).*/\1/p"
10.0.0.170
取消自动打印,使用扩展正则表达式,p打印所匹配的字符