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.文件处理工具之抽取文本工具案例分析的主要内容,如果未能解决你的问题,请参考以下文章

第七章 linux文本处理工具

Linux 之 awk文本分析工具

文本处理工具

ETL工具之kittle使用案例整理

sed与grep

做项目一定用得到的NLP资源分类版