Linux基础之文本处理命令(wc,cut,sort,uniq,diff,patch)

简介:

我相信大家在使用Linux过程中总会遇到想要提取某些自己需要的信息的情况,比如如下这四种情况:

1、找出ifconfig命令结果中eno16777728的IPv4地址

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

3、查出/tmp的权限,以数字方式显示

这个时候,我们使用命令当然也可以查看,不过还需要自己通过眼睛去过滤不需要的信息,多费劲。如何让自己更轻松的看到自己想看到自己想看的信息呢?今天的文本处理命令能满足我们的简单需求。



    wc 此wc非彼WC,在这里wc是word count的简写

wc - print newline, word, and byte counts for each file

其表达格式:wc [OPTION]... [FILE]...

常用选项:

      -l:lines 只显示行数

      -w:words  只显示单词总数

      -c:bytes  只显示该内容字节总数


下面以实例来具体显示wc的功用

创建/test目录 创建/test/wc.txt文件

1
2
3
[root@localhost  test ] # cat > 1
hello me
hello my boy

使用cat在wc.txt内输入一些字符

1
2
3
4
5
6
7
8
[root@localhost  test ] # wc wc.txt 
  2  5 22  wc .txt   第一个2代表行数 第二个5代表单词数 第三个22代表该内容字节总数 
[root@localhost  test ] # wc -l wc.txt 
wc .txt
[root@localhost  test ] # wc -c wc.txt  
22  wc .txt
[root@localhost  test ] # wc -w wc.txt  
wc .txt


cut  

cut - remove sections from each line of files

表达格式:cut OPTION... [FILE]...

常用选项:

      -d<char> : 以指定的字符为分隔符

      -f #(单个字段)|#-#(连续多个字段)|#,...,#(离散多个字段) 

      -c 按字符切割

      --output-delimiter=STRING指定输出分隔符

以/etc/passwd文件为对象做实验

1、取用户名及用户UID并指定输出的分隔符为#

1
2
3
4
5
6
[root@localhost  test ] # tail -5 /etc/passwd
laowang:x:4322:4322:: /home/laowang : /bin/bash
u1:x:4323:4323:UUU: /home/u1 : /bin/csh
u2:x:4324:4324:: /home/u2 : /bin/bash
u3:x:4325:4325:: /home/u3 : /bin/bash
u4:x:4326:4326:: /home/u4 : /sbin/nologin

通过上面内容,我们可以确定我们需要的内容在第一节跟第三节,同事分隔符为“:”

1
2
3
4
5
6
[root@localhost  test ] # cut -d: -f 1,3 /etc/passwd --output-delimiter=#
root #0
bin #1
daemon #2
adm #3
..

2、查看/etc/passwd文件最后一行,且从第5个字符开始截取到第十个字符.

1
2
[root@localhost  test ] # tail -1 /etc/passwd | cut -c 5-10
:4326:


sort 排序

sort - sort lines of text files

表达格式: sort [OPTION]... [FILE]...

常用选项:

      -t CHAR:指定分隔符

      -k #:用于排序比较的字段

      -n:基于数值大小排序

      -r:逆序排列

      -f:忽略字符大小写

      -u:重复内容只保留一行

还是以/etc/passwd为对象测试

显示UID最大的用户及其默认shell

1
2
3
4
5
6
7
8
9
root@localhost  test ] # sort -t: -k 3 -n /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
...
basher:x:4329:4329:: /home/basher : /bin/bash
nologin:x:4330:4330:: /home/nologin : /sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User: /var/lib/nfs : /sbin/nologin

显示成功,但是结果并不直观,我们在利用上面的cut命令对结果进行进一步加工

1
2
[root@localhost  test ] # sort -t: -k 3 -n /etc/passwd | tail -1 | cut -d: -f 1,7
nfsnobody: /sbin/nologin


uniq 报告或移除重复的行

uniq - report or omit repeated lines

表达格式:uniq [OPTION]... [INPUT [OUTPUT]]

常用选项:

      -c:显示每行的重复次数

      -u:仅显示未曾重复过的行

      -d:仅显示重复过的行

为了演示uniq命令方便,我们创建一个有重复行的文件/test/uniq.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost  test ] # cat uniq.txt 
qqqq
qqqq
qqqq
dfsdf
aa
bb
bb
cc
q
[root@localhost  test ] # uniq uniq.txt 
qqqq
dfsdf
aa
bb
cc
q

uniq 加文件默认将重复的内容隐藏。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost  test ] # uniq -c uniq.txt 
       3 qqqq
       1 dfsdf
       1 aa
       2 bb
       1 cc
       1 q
       1 q
[root@localhost  test ] # uniq -u uniq.txt  
dfsdf
aa
cc
q
[root@localhost  test ] # uniq -d uniq.txt  
qqqq
bb



diff  逐行比较文件的异同

diff - compare files line by line

diff [OPTION]... FILES

常用选项:

      -u:使用unified机制,即显示要修改的行的上下文,默认3行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost  test ] # cat diff1 diff2
abcd
abcde
abcd
bcd
abcde
bc
[root@localhost  test ] # diff diff1 diff2   
1c1
< abcd
---
> bcd
3c3
< abcd
---
bc
[root@localhost  test ] # diff -u diff1 diff2
--- diff1       2016-08-05 19:46:36.985538120 +0800
+++ diff2       2016-08-05 19:46:54.951836769 +0800
@@ -1,3 +1,3 @@
-abcd
+bcd
  abcde
-abcd
+ bc

patch 向文件打补丁

基本概念 patch - apply changes to files

表达格式patch [-blNR][ -c| -e| -n][-d dir][-D define][-i patchfile]

               [-o outfile][-p num][-r rejectfile][file]

patch [OPTION] -l /PATH/PATH_FILE /PATH/OLDFILE 

patch /PATH/OLDFILE < /PATH/PATH_FILE 



常用的简单文本处理命令介绍完毕,下面来利用本文介绍的命令来解决开头提出的四个问题

1、找出ifconfig命令结果中eno16777728的IPv4地址

1
2
ifconfig  tr  -cs  '[:digit:].'  ':' cut  -d: -f 5
10.1.253.79

以上共分3步

1)先将ifconfig的内容当做tr的基本输入内容;2)将第一步的内容中所有非数字的内容替换为":"并压缩;3)看所需的IP在第几段然后使用cut命令进行切割


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

查看分区空间命令为df

1
2
[root@localhost  test ] # df | tr -s ' ' ':'| cut -d: -f 5| tr -d '%'|sort -n|tail -1
29

要实现上述内容需要

1)使用df列出分区空间使用率的内容,

2)之后使用tr将空格替换为:并进行压缩,

3)再之后使用cut进行切割将使用率的列取出,

4)再使用tr将%剔除,

5)之后使用sort按数值大小进行排序

6)最后再使用tail取最后一行的最大值。


3、查出/tmp的权限,以数字方式显示

查看/tmp权限可以使用stat,它可以自动显示处其权限对应的数值,剩下的只需要我们将数字从内容中取出即可。

1
2
root@localhost  test ] # stat /tmp/ | tr -cs '[:digit:]' ':'| cut -d: -f 9
1777

1)先显示权限内容

2)将内容中所有非数字替换为“:”并压缩

3)数出对应的权限数字在第几段后进行切割










本文转自 紫色的茶碗 51CTO博客,原文链接:http://blog.51cto.com/chawan/1834875,如需转载请自行联系原作者
目录
相关文章
|
6天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
59 6
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
31 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
26 2
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
28 3
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
37 6
|
4月前
|
Linux
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
Linux部署04-ls命令的参数和选项,主体,参数,选项,ls / 查看根目录下的文件夹,-a的意思是列出全部选项 ls -a home全部文件,.代表着隐藏的文件夹,-l 选项,以列表竖向的形式展
|
4月前
|
Linux
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
Linux部署 cd-pwd命令,cd 不写参数 就直接回到用户的HOME目录,pwd 查看当前的工作目录,pwd是常看当前目录的路径,无参数
|
4月前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
6月前
|
安全 网络协议 Linux
【专栏】Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。
532 0
|
6月前
|
Kubernetes Linux Shell
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
Linux |奇怪的知识---complete命令---你不知道的命令参数补全---kubectl命令的参数补全
154 0
下一篇
无影云桌面