9.文本处理工具
Posted 永远的红茶加白地兰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
1 bc
2 aad
3 fff
4 qwq
5 fg
6 opq
7 gk
8 gkqlb
9 vql
10 fqf
11 p-
12 kq0
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.159 netmask 255.255.255.0 broadcast 10.0.0.255
//再用tail命令取最后一行,就把第二行取回来了
[root@rocky ~]# ifconfig ens33|head -n2|tail -n1
inet 10.0.0.159 netmask 255.255.255.0 broadcast 10.0.0.255
Case2:
//先用tail -n +2命令,从第二行开始往后输出
[root@rocky ~]# ifconfig ens33|tail -n +2
inet 10.0.0.159 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::20c:29ff:fea3:340c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a3:34:0c txqueuelen 1000 (Ethernet)
RX packets 3163 bytes 364729 (356.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2043 bytes 162856 (159.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//然后再用head命令取第一行
[root@rocky ~]# ifconfig ens33|tail -n +2|head -n1
inet 10.0.0.159 netmask 255.255.255.0 broadcast 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.159 netmask 255.255.255.0 broadcast 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
devtmpfs 968548 0 968548 0
tmpfs 998884 0 998884 0
tmpfs 998884 9548 989336 1
tmpfs 998884 0 998884 0
/dev/mapper/rl-root 73364480 5287888 68076592 8
/dev/mapper/rl-home 133067284 975168 132092116 1
/dev/sda1 1038336 231472 806864 23
tmpfs 199776 1180 198596 1
tmpfs 199776 0 199776 0
//然后用rev按行反向输出
[root@rocky ~]# df |tail -n+2|cut -d% -f1|rev
0 845869 0 845869 sfpmtved
0 488899 0 488899 sfpmt
1 633989 8459 488899 sfpmt
0 488899 0 488899 sfpmt
8 29567086 8887825 08446337 toor-lr/reppam/ved/
1 611290231 861579 482760331 emoh-lr/reppam/ved/
32 468608 274132 6338301 1ads/ved/
1 695891 0811 677991 sfpmt
0 677991 0 677991 sfpmt
最后以空格为分隔符cut剪掉第一列得到使用率。
[root@rocky ~]# df |tail -n+2|cut -d% -f1|rev|cut -d\' \' -f1
0
0
1
0
8
1
32
1
0
以上是关于9.文本处理工具的主要内容,如果未能解决你的问题,请参考以下文章