9.文本处理工具

大道之行,天下为公。这篇文章主要讲述9.文本处理工具相关的知识,希望能为你提供帮助。
1.cat命令

命令格式 cat 选项 文件 -E:显示行结束符$ -A:显示所有控制符 -n:对显示出的每一行进行编号 -b:非空行编号 -s:压缩连续的空行成一行

记:cat -A 显示所有控制符($ 换行符) [root@rocky ~]# cat -A 11.txt $ \'d,a$ f,asf$ ,f,$ af,$ \'af,a$ ,f,$ f,a,$ fad$ a,$ f$ iiii$ ad$ a.sd.$ ; dadzzzzzZZZZZZ$ wd$ M-oM-< M-^ZM-oM-< M-^Zi$ ZZ$ $

2.nl命令(显示行号)
相当于cat -b
[root@rocky ~]# nl test.txt 1bc 2aad 3fff 4qwq 5fg 6opq 7gk 8gkqlb 9vql 10fqf 11p- 12kq0

3.tac命令(逆向显示文本内容)
//cat的正向显示 [root@rocky ~]# cat 1.txt 1 2 3 4 5 6 //使用tac逆向显示 [root@rocky ~]# tac 1.txt 6 5 4 3 2

4.rev(将同一行的内容逆向显示)
//使用cat正向显示
[root@rocky ~]# cat 2.txt 12 35 562 6653 22333 //使用rev逆向显示同行内容 [root@rocky ~]# rev 2.txt 21 53 265 3566 33322

5.head ,tail 命令
//head命令从头开始查看,tail命令从尾部开始查看 命令格式 head 参数 文件

-q 隐藏文件名 -v 显示文件名 -c< 数目> 显示的字节数。 -n< 行数> 显示的行数。

tail 参数 文件 -f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新建同名文件,将无法继续跟踪文件 -F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文件 -q 不显示处理信息 -v 显示详细的处理信息 -c< 数目> 指定获取后的字节 -n< 行数> 显示文件的尾部 n 行内容 --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束 -q, --quiet, --silent 从不输出给出文件名的首部 -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

例1:查看ens33网卡名称,把第二行取出来
Case1: //先用head把网卡前2行取回来 [root@rocky ~]# ifconfig ens33|head -n2 ens33: flags=4163< UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.159netmask 255.255.255.0broadcast 10.0.0.255 //再用tail命令取最后一行,就把第二行取回来了 [root@rocky ~]# ifconfig ens33|head -n2|tail -n1 inet 10.0.0.159netmask 255.255.255.0broadcast 10.0.0.255

Case2:
//先用tail -n +2命令,从第二行开始往后输出 [root@rocky ~]# ifconfig ens33|tail -n +2 inet 10.0.0.159netmask 255.255.255.0broadcast 10.0.0.255 inet6 fe80::20c:29ff:fea3:340cprefixlen 64scopeid 0x20< link> ether 00:0c:29:a3:34:0ctxqueuelen 1000(Ethernet) RX packets 3163bytes 364729 (356.1 KiB) RX errors 0dropped 0overruns 0frame 0 TX packets 2043bytes 162856 (159.0 KiB) TX errors 0dropped 0 overruns 0carrier 0collisions 0//然后再用head命令取第一行 [root@rocky ~]# ifconfig ens33|tail -n +2|head -n1 inet 10.0.0.159netmask 255.255.255.0broadcast 10.0.0.255

6.cut命令(按列抽取文本cut)
命令格式: cut 选项 文件 常用选项 -d:指明分隔符,默认tab -f:与-d一起使用,指定显示哪个区域。第3个字段,就是3; 如果要多个字段,可以1,3,6; 如果连续多个字段 1-6;混合使用1-3,7列 -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。 -c :以字符为单位进行分割。

例:使用cut命令取出ens33网卡的ip地址
//先进行行挑选,用tail命令从第二行开始输出,然后用head命令取第一行

[root@rocky ~]# ifconfig ens33|tail -n +2|head -n1
inet 10.0.0.159netmask 255.255.255.0broadcast 10.0.0.255
//使用cut命令以空格为分隔符输出ip地址 分隔符必须加引号\' \' root@rocky ~]# ifconfig ens33|tail -n +2|head -n1|cut -d\' \' -f 10 10.0.0.159

例2:cut得到分区使用率
//先tail命令从第二行开始取,然后用cut以%为分割符取得前面的
[root@rocky ~]# df |tail -n+2|cut -d% -f1 devtmpfs96854809685480 tmpfs99888409988840 tmpfs99888495489893361 tmpfs99888409988840 /dev/mapper/rl-root73364480 5287888680765928 /dev/mapper/rl-home 133067284975168 1320921161 /dev/sda1103833623147280686423 tmpfs19977611801985961 tmpfs19977601997760

//然后用rev按行反向输出 [root@rocky ~]# df |tail -n+2|cut -d% -f1|rev 08458690845869sfpmtved 04888990488899sfpmt 16339898459488899sfpmt 04888990488899sfpmt 8295670868887825 08446337toor-lr/reppam/ved/ 1611290231 861579482760331 emoh-lr/reppam/ved/ 3246860827413263383011ads/ved/ 16958910811677991sfpmt 06779910677991sfpmt

【9.文本处理工具】最后以空格为分隔符cut剪掉第一列得到使用率。
[root@rocky ~]# df |tail -n+2|cut -d% -f1|rev|cut -d\' \' -f1 0 0 1 0 8 1 32 1 0


    推荐阅读