第七章 文本处理工具
1 文件内容查看命令
1.1 cat命令
cat 查看文件主要选项:-n 显示行号-b 只显示非空行的内容(显示行号)-E 在每行结束处显示$-s 压缩空行-T 把tab键字符显示为^I主要案例:cat -n xujun.txtcat -b xujun.txtcat -E xujun.txtcat -T xujun.txtcat >>xujun.txt<<EOF #cat的高级用法,配合重定向XujunWoainiEOF生产案例实践:# cat access.log error.log >web_$(date +%F).log #对多个日志文件进行合并
1.2 nl命令
nl 显示行号,相当于cat -b[06:35:38 root@nginx-18 ~]# cat -b /etc/fstab 1 # 2 # /etc/fstab 3 # Created by anaconda on Thu Apr 28 21:03:43 2022 4 # 5 # Accessible filesystems, by reference, are maintained under '/dev/disk' 6 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 7 # 8 UUID=285d0c54-2e7d-4ca9-90c7-93cba1c52553 / xfs defaults 0 0 9 UUID=8abc267d-8303-452b-9856-f222473ff595 /boot xfs defaults 0 0 10 UUID=51d60775-2f21-49c0-b842-4a2934c60b3b swap swap defaults 0 0[06:35:46 root@nginx-18 ~]# nl /etc/fstab 1 # 2 # /etc/fstab 3 # Created by anaconda on Thu Apr 28 21:03:43 2022 4 # 5 # Accessible filesystems, by reference, are maintained under '/dev/disk' 6 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info 7 # 8 UUID=285d0c54-2e7d-4ca9-90c7-93cba1c52553 / xfs defaults 0 0 9 UUID=8abc267d-8303-452b-9856-f222473ff595 /boot xfs defaults 0 0 10 UUID=51d60775-2f21-49c0-b842-4a2934c60b3b swap swap defaults 0 0
1.3 tac命令
tac 逆向显示文本内容[07:35:06 root@nginx-18 /scripts]# cat 17.sh#!/bin/bashdisk_dir=/tmp/diskday=$(date +%F)disk_space1=`df -h|awk '{print $5}'|sed 1d|cut -d "%" -f1|sed -n '1'p`disk_inode_space1=`df -i|awk '{print $5}'|sed 1d|cut -d "%" -f1|sed -n '1'p`if [ $disk_space1 -ge 85 ] || [ $disk_inode_space1 -ge 85 ];then echo "磁盘空间或者磁盘Inode数量不够了,请登录机器,检查。。。" exit 1fi[07:35:09 root@nginx-18 /scripts]# tac 17.shfi exit 1 echo "磁盘空间或者磁盘Inode数量不够了,请登录机器,检查。。。"if [ $disk_space1 -ge 85 ] || [ $disk_inode_space1 -ge 85 ];thendisk_inode_space1=`df -i|awk '{print $5}'|sed 1d|cut -d "%" -f1|sed -n '1'p`disk_space1=`df -h|awk '{print $5}'|sed 1d|cut -d "%" -f1|sed -n '1'p`day=$(date +%F)disk_dir=/tmp/disk#!/bin/bash
2 分页查看文件内容
2.1 more命令
more 按页查看,不能回退,灵活上不如less主要案例:more xujun.txt
2.2 less命令
less 查看当前文档内容,相比cat,less的使用方式更加的灵活多变,它可以实现上下翻页等功能主要选项:-N 显示行号主要案列:less xujun.txt
3 显示文本前或后行内容
3.1 head命令
head 查看文件的前N行主要选项:-n 后面接数字,表示查看前几行(也可以不加)注意:head默认查看10行主要案列:head -5 /etc/passwdhead -10 /etc/passwd|tail -5 查看passwd文件中6到10行
3.2 tail命令
tail 查看文件的后N行主要选项:-n 后面接数字,表示查看前几行(也可以不加)-f(循环读取)监视filename文件的尾部内容(默认10行,相当于增加参数-n 10),刷新显示在屏幕上,退出按下ctrl+c-F 类似-f选项,但是不会因文件不存在而报错,是一直等待文件生成。注意:tail默认查看10行主要案列:tail -5 /etc/passwd
4 cut命令
cut 用来显示行中的指定部分,删除文件中指定字段主要选项:-b 用字节来切割-c 用字符来切割-d 指定字段的分隔符,默认的字段分隔符为“TAB”-f 显示指定字段的内容(一般配合-d使用)--output-delimiter=“ ” 可以把指定的分隔符替换成其他字段,比如说空格符主要案例:ifconfig eth0|grep "inet addr:"|cut -c 21-33192.168.203.8
5 paste命令
paste:把每个文件以列对列的方式,一列列地加以合并主要选项:-d 指定分隔符-s 已行来指定文件主要案例:paste -d :xujun.txt xujun1.txtpaste -sd '=\n' svn.txt
6 分析文本的工具
6.1 wc命令
wc 统计文件的字数和行数,字节数 主要选项:-l 显示总行数,常用于查看进程是否启动-L 显示最长一行的字符数-c 显示字节数-m 显示字符数-w 显示单词数主要案例:wc -l xujun.txt生产小案例[root@web01 ~]# ps -ef|grep "/sbin/nginx"|grep -v grep|wc -l结果:1 #工作常用这个来查看进程是否存在,假如为1,就是存在的。要是0的话,就表示该进程不存在
6.2 sort命令
sort:将文件的每一行作为一个单位,然后升序排列(默认按照accll码排序,升序,从小到大)主要选项:-n 按照数值排序 sort -n xujun.txt-r 倒叙排列数值 sort -r xujun.txt-u 去除重复行-t 指定分隔符-k 指定区域-f 忽略字符大小写 主要案例: awk 'BEGIN{RS="[:/0-9 |\n]+"}{print $0}' passwd | sort | uniq -c | sort -rn 统计单词数head -10 /etc/passwd|tail -5|sort -t : -k 3 -n|cut -d : -f1 #以冒号分隔,取出/etc/passwd文件的第6至第10行,并将这些信息按第三个字段的数值大小进行排序,最后仅显示各自的第一个字段#生产小案例根据ip地址来的第三列和第四列来排序:[root@db02 ~]# cat oldboy.txt |sort -t"." -k3 -k4172.16.0.58172.16.1.52172.16.1.52172.16.1.53172.16.2.10172.16.2.52172.16.3.108172.16.4.52172.16.4.54172.16.5.52172.16.9.52172.16.9.58
6.3 uniq命令
uniq:用于去除或忽略文件中的重复行,一般和sort结合使用主要选项:-c 在每列旁边显示该行重复出现的次数-d 仅显示重复的行-u 仅显示不曾重复的行主要案例:sort file.txt | uniq -c 统计各行在文件中出现的次数awk 'BEGIN{RS="[ :/0-9\n]+"}{print $0}' xujun.txt|sort -n|uniq -c3 adm1 bash5 bin2 daemon3 halt2 lp1 lpd3 mail6 nologin3 root12 sbin
7 文件之间的比较
7.1 diff命令
diff:用于比较文件或目录的内容,特别是比较两个版本不同的文件以找到改动的地方提示符:a add 增加 c chage 改变d delate 删除主要选项:-u 显示行修改的上下文,默认为上下3行主要案例:diff xujun.txt xujun1(比较两个文件内容有什么不同)[root@docker-11 ~]# diff a.txt b.txt1,4c1,4< xujun 21< linux 23< linus 25< tom 21---> xujun man> linux man> linus man> tom woman其中<打头的行属于文件a.txt,以>打头的行属于文件b.txt
7.2 vimdiff
vimdiff:可视化的比较工具,和diff一样,就是多了vim可视化(最多可以比较4个文件) 主要案列:vimdiff xujun.txt xujun1 xujun2 xujun3