7-1.文件处理工具之抽取文本工具案例分析
Posted studywen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-1.文件处理工具之抽取文本工具案例分析相关的知识,希望对你有一定的参考价值。
1.找出ifconfig “网卡名” 命令结果中本机的IPv4地址
案例思路
分析:要去出IP地址,首先要取到IP所在的行,取行可以通过head和tail来完成;取列我们会想到用cut来完成,不过此例中要注意分隔符(空格和冒号),因此要引入tr。
[root@localhost data]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.50.100.12 netmask 255.0.0.0 broadcast 10.255.255.255
inet6 fe80::cdf4:f8e0:5549:d25a prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a6:5d:03 txqueuelen 1000 (Ethernet)
RX packets 45491 bytes 46914715 (44.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18127 bytes 2079091 (1.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost data]# ifconfig ens33|head -2|tail -1|tr -s " "|cut -d" " -f3
10.50.100.12
[root@localhost data]#
2.查出分区空间使用率的最大百分比值
案例思路
分析:首先通过df -h查看分区结果,我们所需要的是第5列,自然而然会考虑使用cut命令,但是第一列和第二列中间的空格长度不一,我们利用以往的经验会使用tr这个命令,可以将空格压缩,而且还能转化为自己想要的间隔符那么接下来就是排序了。
[root@localhost data]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 100G 1.2G 99G 2% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.5M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda3 50G 33M 50G 1% /data
/dev/sda1 1014M 127M 888M 13% /boot
tmpfs 199M 0 199M 0% /run/user/0
[root@localhost data]# df -h|tr -s " " % |cut -d% -f5|sort -n|tail -1
13
[root@localhost data]#
3.查出用户UID最大值的用户名、 UID及shell类型
案例思路
分析:首先取出文件/etc/passwd中含有用户名.UID.以及shell类型的列,不难记忆,分别是1,3,7这三列,我们可以用cut命令将这三列取出,然后根据sort的功能,根据uid大小排序,这也是比较容易的。
[root@localhost data]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
wensijia:x:1000:1000:wensijia:/home/wensijia:/bin/bash
[root@localhost data]# cut -d: -f1,3,7 /data/passwd |sort -t: -k2 -nr|head -1
wensijia:1000:/bin/bash
4.查出/tmp的权限,以数字方式显示
案例思路
分析:说到权限,最容易想到的自然是使用ls命令,很容查看到文件的权限,当然查看到的是用字符表示的,和题意是不符的,我们可能会想对字符做一个转化,但是以目前接触到的命令,还是无法解决,那么有没有更简单的方法,直接截取到数字表示的权限。还记得我们如何查看atime.mtime以及ctime,使用的是stat这个命令,使用它也可以查看到数字表示的权限哦。
在这里还有更简单的方法,stat -c %a /tmp/一条命令就可以。
[root@localhost data]# stat /tmp/
File: ‘/tmp/’
Size: 166 Blocks: 0 IO Block: 4096 directory
Device: 802h/2050d Inode: 134320200 Links: 8
Access: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:tmp_t:s0
Access: 2020-08-04 15:51:58.634794627 +0800
Modify: 2020-08-04 14:36:54.324695400 +0800
Change: 2020-08-04 14:36:54.324695400 +0800
Birth: -
[root@localhost data]# stat /tmp/|head -4|tail -1|cut -d/ -f1|cut -d‘(‘ -f2
1777
[root@localhost data]# stat -c %a /tmp/
1777
5.统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
案例思路
分析:首先我们可以使用netstat命令查看远程连接的IP,由于对ip的统计,我们下一步把ip取出来,这个操作和案例一类似,这里就不深入研究了,再接着是排序,会使用sort命令也比较容易,统计数量当然是uniq了。
[root@localhost data]# netstat -tun
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 10.50.100.12:22 10.0.0.110:49652 ESTABLISHED
[root@localhost data]# netstat -tun|grep ESTAB|tr -s " " :|cut -d: -f6|sort -nr|uniq -c
1 10.0.0.110
以上是关于7-1.文件处理工具之抽取文本工具案例分析的主要内容,如果未能解决你的问题,请参考以下文章