Linux面试必考-高级文本处理工具进阶| 学习笔记

简介: 快速学习Linux面试必考-高级文本处理工具进阶

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux面试必考-高级文本处理工具进阶】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7616


Linux面试必考-高级文本处理工具进阶


内容简介

一、paste

二、分析文本的工具

1.文本数据统计: wc(word count)

2.文本排序: sort

3.uniq命令

4.比较文件:diff和patch

三、练习

四、Linux文本处理三剑客


一、paste

Paste不是从一个文件中取多个列,而是合并两个文件。

paste合并两个文件同行号的列到一行

paste [OPTION]...[FILE]...

-d分隔符:指定分隔符,默认用TAB

-s∶所有行合成一行显示

paste f1 f2

paste -s f1 f2

横向合并:

[root@centos6 ~j#cat f1

1

2

3

4

5

6

7

8

9

10

[root@centos6~]#cat f2

10

11

12

13

14

15

16

17

18

19

20

[root@centos6~]#paste f1 f2

1       10

2       11

3       12

4       13

5       14

6       15

7       16

8       17

9       18

10      19

第一个文件的第一行和第二个文件的第一行横向合成了一行。

纵向合并:

[root@centos6~]#cat !* cat f1 f2

1

2

3

4

5

6

7

8

9

10

10

11

12

13

14

15

16

17

18

19

20

Paste-s的合并方式:

[root@centos6 ~]#paste  -s  f1  f2

1    2   3   4   5   6   7   8   9  10

10  11  12  13  14  15  16  17  18  19

Paste -s的合并方式:

[root@centos6 ~]#paste -d: f1 f2

1:10

2:11

3:12

4:13

5:14

6:15

7:16

8:17

9:18

10:19

:20

 

二、分析文本的工具

1.文本数据统计: wc(word count)

[root@centos6 ~]#wc f1

10(文件的行数)    10(文件有几个单词,只要不用空格隔开都默认算一个单词)

21(文件有几个字节)   f1

WC并不是常用在文本场景,常用的场景是和管道配合起来用,因为WC是支持标准输入的。

如果想统计当前目录下的文件个数:

[root@centos6 ~]#ls

Anaconda-ks.cfg  Documents  f1  install.log  Music  Public  Videos

Desktop         Downloads  f2  install.log.syslog   Picture  Templates

[root@centos6-]#ls  | wc

13   13   120(字节)

WC命令有自己的程件选项,比方说可以统计有多少行,行用的是-l,统计指定文件的行数:wc -1 /etc/passwd,正常情况下,一行代表了一个账号。

统计有多少个单词:wc -w/etc/passwd

统计字节数:wc -c/etc/passwd

统计字符数:wc -m /etc/passwd

显示最长的行:wc - L/etc/passwd

统计账号有多少用户在登录:who |wc -1

统计日志:cat /var/log/httpd/access_log|wc -1

统计网站访问量的一个指标:pv page view

总结:计数单词总数、行总数、字节总数和字符总数

可以对文件或 STDIN 中的数据运行

wc story.txt

39 237 1901 story.txt

行数 字数 字节

数常用选项

-l只计数行数

-w

只计数单词总数

-c

只计数字节总数

-m

只计数字符总数

-L

显示文件中最长行的长度

2.文本排序: sort

把整理过的文本显示在 STDOUT,不改变原始文件

Sort[options] file(s)

指定对第几列排序:sort -t:-k/etc/passwd(指定对第一列排序)

如果是对数字排序不是按照数字大小牌组,还是按照字符进行排序。如果想按照数字大小进行排序则输入:sort -t:-k3 -n /etc/passwd

反向排序:sort -t:-k3 -nr /etc/passwd

查找分区利用率最大的值:

[root@centos6 ~]#df | tr -s   %|cut -d% -f5

Use

10

1

4

1

100

[root@centos6 ~]#df |tr -s   %|cut -d% -f5 |sort -nr|head -n1

[root@centos6~]#netstat-nt

Active Internet connections (w/o servers)

Proto Recv-o send-o Local Address  Foreign Address  State

Tcp  0  96 192.68.30.128: 22  192.168.30.1:53835  ESTALISHED

PID程序编号

排序:cut -d   -f1/var/log/httped/access_log

显示出来以后,默认按照访问的顺序排列。

要把相同的放到一起,所以进行排序:cut -d  -f1 /var/log/httpd/access_log |sort,整理过之后,同一个IP就放在一起。

◆常用选项

➢-r 执行反方向(由上至下)整理

➢-R随机排序

➢-n 执行按数字大小整理

➢-f选项忽略( fold )字符串中的字符大小写

➢-u 选项(独特, unique )删除输出中的重复行

➢-t  c选项使用c做为字段界定符

➢-k  x选项按照使用c字符分隔的x列来整理能够使用多次

倒序排序:seq 1  20  |sort -nr

20

19

18

17

16

15

随机排序:seq 1  20  |sort -R(可以利用这个进行抽奖)

34

6

15

20

取用户名和ID,并且对ID进行倒序排序

Cut -d:-f1,3/etc/passwd|sort -t :-k2 -nr

3.uniq命令

◆uniq命令:从输入中删除前后相接的重复的行

◆uniq [OPTION]... [FILE]...

-C:显示每行重复出现的次数

-d:仅显示重复过的行

-U:仅显示不曾重复的行

注:连续且完全相同方为重复

常和 sort 命令一起配合使用 :

sort userlist.txt| uniq -C

假如说生成一个文件:

[root@centos6 ~]#cat f1

aa

aa

bb

aa

Ccc

Ccc

Ddd

[root@centos ~]#uniq f1

aa

cc

aa

Ccc

ddd

ccc

ddd

此时 uniq 的作用就是把相邻的重复行合并为一行

想知道是几个行合并成一个行的操作方法:

[root@centos ~]#uniq -c f1

2 aa

1 bb

1 aa

1 ccc

1 ddd

2 ccc

1 ddd

如果想要统计日志中有多少IP分别访问过我,而且统计出来每个IP访问了多少次。

首先取出IP:[root@centos ~]#cat /var/log/httpd/access-log |cut -d -f1

排序:[root@centos ~]#cat /var/log/httpd/access-log |cut -d -f1|sort

统计相邻的行重复了多少次:[root@centos ~]#cat /var/log/httpd/access-log |cut -d -f1|sort|uniq -c

取次数出现最多的前十个:[root@centos ~]#cat /var/log/httpd/access-log |cut -d -f1|sort|uniq -c|sort -nr|head -n10

Last命令也是一个显示日志的命令,reboot表示重启的信息

作业:统计一下远程的主机登录次数最多的前三个IP地址

4.比较文件:diff和patch

◆比较两个文件之间的区别

diff foo.conf foo2.conf

5c5

< use_ _widgets = no

---

>use_ widgets = yes

➢注明第5行有区别(改变)

如果想要比较两个文件是否一样,不能仅仅比较文件的大小,还要关注文件的内容,

[root@centos6 ~] #

[root@centos6 ~] #

[root@centos6 ~]#

[root@centos6 ~]#11 /data/

f1    lost+ found/

[root@centos6 ~]#cp /data/f1 /data/f2

[root@centos6 ~] #nano /data/f2

-r--rw-rwx. 1 wang g1 2 Apr 4 17:50 /data/f1

一r--r--r-x. 1 root root 2 Apr 4 17:50 /data/f2

[root@centos6 ~ ]#diff *

diff /data/f1 /data/f2

1c1

---

>a

[root@centos 6 ~]#cp/etc/fstab

[root@centos6 ~]nano/etc/fstab

[root@centos6 ~]diff /etc/fstab  fstab

4c4

< # Created by anaconda on Tue Mar 27 16:59:39 2018

---

> # eated by anaconda on Tue Mar 27 16:59:39 2018

9c9

< UUID=9c3da07 a- ac88 -449b- a3be-6f1d638ca49c /   ext4  defaults   11

---

>UaaaID=9c 3da07 a- ac88 -449b-a3be-6f1d638ca49c /  ext4  defaults   11

Diff-u的使用:

[root@centos6 ~] #diff -u /etc/fstab fstab

---/etc/fstab  2018-03-27 16:59: 39.943999088 +0800

+++ fstab   2018-04-04 17 :51:27.907844698 +0800

aa -1,12 +1,12 qa

Diff -u fstab fstab2 > diff.log的好处就是,当以文件丢失时,可以利用这个方法找回这个文件。但是找回来的文件并不是旧文件的名字。

复制对文件改变patch

◆diff

命令的输出被保存在一种叫做“补丁”的文件中

➢使用

选项来输出“统一 -的 ( unified )”diff格式文件,最适用于补J文件

◆patch复制在其它文件中进行的改变 (要谨慎使用)

➢适用-b 选项来自动备份改变了的文件

$ diff -u foo.conf foo2.conf > foo. patch

$ patch b foo.conf foo.patch

[root@centos6 ~]#a+b^g

[root@centos6 ~]#rm -f fstab

[ r oot@centos6 ~ ] #patch -b   fstab2 diff. log

Patching  file fstab2

Reversed (or previously applied) patch detected! Assume -R? [n] y

[root@centos6 ~]#11 fstab2

-rw-r--r--. 1 root root 900 Apr 4 17 :55 fstab2

[root@centos6 ~]#11 fstab2

-rw-r--r--. 1 root root 900 Apr 4 17 :55 fstab2 Downloads  f2  fstab2.orig  install.log.syslog Picture Templates

Desktop  Documents f1  fastab2  install/log  Music  Public Videos

 

三、练习

◆找出 ifconfig “网卡名” 命令结果中本机的IPv4地址

◆查出分区空间使用率的最大百分比值

◆查出用户 UID 最大值的用户名、UID及shell类型

◆查出 /tmp 的权限,以数字方式显示;

◆统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序(netstat -nt)

 

四、Linux文本处理三剑客

◆grep : 文本过滤(模式: pattern)工具

grep, egrep, fgrep (不支持正则表达式搜索)

◆sed : stream editor ,文本编辑工具

awk : Linux上的实现gawk ,文本报告生成器

相关文章
|
3月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
404 4
|
7月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
3月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
217 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
3月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
323 16
|
5月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
164 1
Linux系统性能调优技巧和相关工具
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
610 16
|
4月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
7月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
396 32
|
9月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
667 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具