Kevin_306

05 文本处理工具 cut、paste 、跟踪磁盘分区利用率 20210310 (三)

 

一、按列抽取文本cut

cut选项:

-d DELIMITER: 指明分隔符,默认tab 
-f FILEDS:     
          #: 第#个字段,例如:3     
          #,#[,#]:离散的多个字段,例如:1,3,6     
          #-#:连续的多个字段, 例如:1-6
         混合使用:1-3,7 
-c 按字符切割 
--output-delimiter=STRING指定输出分隔符

  

案例1:取出文件中的特定内容

1 [01:55:12 root@localhost ~]#who
2 root     pts/0        2021-03-10 00:02 (192.168.253.233)
 1 [01:55:28 root@localhost ~]# cat /etc/passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
 5 adm:x:3:4:adm:/var/adm:/sbin/nologin
 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
 7 sync:x:5:0:sync:/sbin:/bin/sync
 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
 9 halt:x:7:0:halt:/sbin:/sbin/halt
10 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
12 games:x:12:100:games:/usr/games:/sbin/nologin
13 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
14 nobody:x:99:99:Nobody:/:/sbin/nologin
15 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16 dbus:x:81:81:System message bus:/:/sbin/nologin
17 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
18 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19 postfix:x:89:89::/var/spool/postfix:/sbin/nologin

  ,

#取值 取出用户名,ID等信息

 1 [02:01:29 root@localhost ~]#cut -d : -f1,3-5 /etc/passwd
 2 root:0:0:root
 3 bin:1:1:bin
 4 daemon:2:2:daemon
 5 adm:3:4:adm
 6 lp:4:7:lp
 7 sync:5:0:sync
 8 shutdown:6:0:shutdown
 9 halt:7:0:halt
10 mail:8:12:mail
11 operator:11:0:operator
12 games:12:100:games
13 ftp:14:50:FTP User
14 nobody:99:99:Nobody
15 systemd-network:192:192:systemd Network Management
16 dbus:81:81:System message bus
17 polkitd:999:998:User for polkitd
18 sshd:74:74:Privilege-separated SSH
19 postfix:89:89

 两种写法

[01:56:17 root@localhost ~]# cat /etc/passwd|head -n 5|cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp

  #取值,只要用户名

 1 [02:01:40 root@localhost ~]#cut -d : -f1 /etc/passwd
 2 root
 3 bin
 4 daemon
 5 adm
 6 lp
 7 sync
 8 shutdown
 9 halt
10 mail
11 operator
12 games
13 ftp
14 nobody
15 systemd-network
16 dbus
17 polkitd
18 sshd
19 postfix

 

 案例2:取出使用硬盘空间的数据,跟踪磁盘分区利用率

[root@rocky8 ~]#df

 

方法1#从第44-46个字符,取出分区利用率

从第二行开始取值

[root@rocky8 ~]#df |tail -n +2

 

[ root@rocky8 ~]#df |tail -n +2 |cut -c44-46

剪切第44-46行的内容

方法2 #空格压缩后再去提取,取第五列的值 

[root@rocky8 ~]#df

[root@rocky8 ~]#df |tr -s ' '

[root@rocky8 ~]#df |tr -s ' '|tail -n +2

 取值,取第五行内容

[root@rocky8 ~]#df |tr -s ' '|tail -n +2 |cut -d' ' -f5

继续取值,去掉%;

[root@rocky8 ~]#df |tr -s ' '|tail -n +2 |cut -d' ' -f5|tr -d %

方法3#空格压缩用%替代,用%作为分隔符取值

 1 [02:19:06 root@CentOS8 ~]#df |tr -s " " "%"
 2 Filesystem%1K-blocks%Used%Available%Use%Mounted%on
 3 devtmpfs%1880616%0%1880616%0%/dev
 4 tmpfs%1898924%0%1898924%0%/dev/shm
 5 tmpfs%1898924%9080%1889844%1%/run
 6 tmpfs%1898924%0%1898924%0%/sys/fs/cgroup
 7 /dev/sda3%104806400%2481444%102324956%3%/
 8 /dev/sda2%1038336%170496%867840%17%/boot
 9 /dev/sda1%52415968%7296%52408672%1%/boot/efi
10 tmpfs%379784%0%379784%0%/run/user/0
11 [02:19:24 root@CentOS8 ~]#df |tr -s " " "%"|cut -d% -f5
12 Use
13 0
14 0
15 1
16 0
17 3
18 17
19 1
20 0 

 取值完成,但是我们发现还有不想要的内容(use),怎么办?

从第二行开始往后取值:

1 [02:24:59 root@CentOS8 ~]#df |tr -s " " "%"|cut -d% -f5|tail -n +2
2 0
3 0
4 1
5 0
6 3
7 17
8 1
9 0

 

 二、合并多个文件 paste 

paste常用选项:

-d 分隔符:指定分隔符,默认用TAB 
-s : 所有行合成一行显示

  

使用tr ' ' '\n'

[root@rocky8 ~]#echo {1..10}

[root@rocky8 ~]#echo {1..10} |tr ' ' '\n'

 

posted on 2021-03-10 01:54  熊猫小虾  阅读(150)  评论(0编辑  收藏  举报

导航