200字
文本处理工具
2025-11-26
2025-11-26

文本常见处理工具

​ 文本常见的处理工具,主要的作用是在Linux系统中自动化的将文件指令的输出(回显)进行切割,筛选。留下我们最想要的部分,便于查看,或监控服务器状态。

​ 这些工具就是我们之后便捷、自动化处理Linux任务的前提条件

1.1 文件内容查看命令

1.1.1 查看文本文件内容

1.1.1.1 cat

​ 命令cat用于查看文本内容

cat [选项] <文件名>
#参数
-E					#显示文本每行的结束符$
-A					#显示文本中所有的特殊字符(tab键^I,windows换行^M,结束符$)
-n					#对显示出的每一行进行编号(行号)
-b					#只非空行编号(行号)
-s					#压缩连续的空行为一行(去重)

1.1.1.2 nl

​ 命令nl的作用相当于cat -b,对文本非空行编号显示

1.1.1.3 tac

​ 命令tac的作用也是查看文本内容,但查看的方向与cat相反。是从文本尾部开始读取文件

反向查看(倒序)文件内容

1.1.1.4 rev

​ 命令rev的作用是将文本每行的内容进行反转(reverse 反转)

1.1.2 查看非文本文件内容

1.1.2.1 hexdump

​ 命令hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换成ASCII、八进制、十进制、十六进制格式进行查看

hexdump [选项] <文件名>
#选项
-n					#length 只格式化输出文件的前length个字节
-c					#输出规范的十六进制和ASCII码
-b					#单字节八进制显示

1.1.2.2 od

​ 命令od的作用是读取所给予的文件的内容,并将内容与八进制字码呈现出来

od [选项] <文件名>
#选项
-t a				#字符
-t c				#可打印/转义字符
-t o[N]				#八进制,N默认为4
-t d[N]				#十进制
-t u[N]				#无符号十进制
-t x[N]				#十六进制
-t f[N]				#浮点数

#N是一个数字,代表"字节数".不指定N时大多数格式会使用默认字节数(通常是4)
#具体细节还是另外查询。此命令使用次数还是太低了,了解即可

1.1.2.3 xxd

​ xxd的作用就是将一个文件以十六进制的形式显示出来。还可以将十六进制转换回其原始二进制形式

#例如:
echo {a..z} | tr -d ' '|xxd 
0000000: 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 abcdefghijklmnop
0000010: 7172 7374 7576 7778 797a 0a             qrstuvwxyz.

1.2 分页查看文件内容

1.2.1 more命令

​ 命令more针对于文本内容过多时用于查阅使用。代替cat。好处时只会显示一部分,多余部分会随着翻阅慢慢展示

more -n						#按空格后每次只读取文件n行内容
more +n						#从第n行开始读取内容
more -c						#清除屏幕的内容后再显示文件的内容
more -n -c					#每次读取n行内容前清空屏幕
more -s						#把内容中连续的空行代换为一行空行(去重)

#读取内容时的操作
空格键						#显示下一屏内容
回车键						#向下n行,需要定义 -n. 默认是1行
h键						#显示帮助屏
b键						#显示上一屏内容
q键						#退出more命令
=						#输出当前的行号
:f						#输出文件名和当前的行号
V						#调用vi编辑器
!						#调用shell,并执行命令

1.2.2 less命令

命令less和命令more功能都是分屏读取内容,less功能比more更强大一些,支持一些vim的操作

less <文件名>				#显示一屏
less -N <文件名>			#显示行号

读取内容操作:
b						#向后翻一页
d						#向后翻半页
h						#显示帮助界面
Q						#退出less命令
u						#向前滚动半页
y						#向前滚动一页
/						#搜索信息

空格键					#滚动一页
回车键					#滚动一行

1.3 显示文本前或后行内容

1.3.1 head命令

​ 用于截出文件顶上的内容查看

# head 命令 —— 显示文件的头部内容
head <文件名>					#默认显示文件的前10行内容
head -n x					#显示前x行的内容
head -x						#显示前x行的内容
head -v						#显示文件名的头信息
head -c x					#指定显示前x字节

例子:

cat /dev/urandom | tr -dc '[:alnum:]' | head -c x
#生成x位的随机密码口令

1.3.2 tail命令

tail -c x					#指定获取后x字节
tail -n x					#指定获取后x行
tail -x						#指定获取后x行
tail -f						#跟踪显示文件fd新追加的内容,常用于日志监控(当文件删除再新建同名文件后无法继续跟踪)--追踪inode号
tail -F						#跟踪文件名,当文件删除后再新建同名文件,可以继续跟踪文件(当文件删除再新建同名文件后可以继续跟踪)--追踪文件名,通过文件名查询到inode号后再访问内容

1.3.3 head 和 tail 的相对取值用法

命令 含义 示例
head -n k file 取 file 前 k 行内容 head -n 3 /etc/passwd
head -k file 取 file 前 k 行内容 head -3 /etc/passwd
head -n +k file 取 file 前 k 行内容 head -n +3 /etc/passwd
head -n -k file 取file 第1行到倒数第 k 行内容 head -n -3 /etc/passwd
tail -n k file 从后往前数,取 file 最后一行到第n行内容 tail -n 3 /etc/passwd
tail -k file 从后往前数,取 file 最后一行到第n行内容 tail -3 /etc/passwd
tail -n -k file 从后往前数,取 file 最后一行到第n行内容 tail -n -3 /etc/passwd
tail -n +k file 从后往前数,取 file 第k行到最后一行内容 tail -n +3 /etc/passwd

image-20241102123147195

1.4 按列抽取文本 cut

​ 命令cut的作用是提取文本文件或STDIN数据的指定列

cut -d'<分隔符>'				#指明分隔符,默认tab
cut -f<整数>					#取第几列(字段)(可以同时存在连续和不连续.例:1-5,7)
cut -c						#按字符切割
cut --output-delimiter=STRING	#指定输出时使用的分隔符

#例:
cut -d: -f1,3-4,7 /etc/passwd

1.5 合并多个文件 paste

​ 命令paste的作用是将多个文件的同一行内容合并为一行

paste -d			#指定合并分隔符,默认使用tab
paste -s			#横向合并(paste默认使用纵向合并)

1.6 文本分析工具

1.6.1 文本数据统计 wc

​ 命令wc可用于统计文件的行数、单词数、字节数和字符总数。可以对文件或STDIN中的数据统计

wc [选项] <文件>
#选项
-l					#计算行数
-w					#计算单词总数
-c					#计算字节总数
-m					#计算字符总数
-L					#显示文件中最长一行的长度

1.6.2 文本排序 sort

​ 命令sort用于将文本整理后输出到屏幕上,不改变原始文件

sort [选项] <文件>
#该命令默认以升序排序(从小到大)
#选项
-u					#去重
-f					#忽略大小写
-n					#以数字大小排序
-r					#倒序(即以降序排列)

-t					#指定列分割符
-k					#指定用于排序的列

-b					#忽略文件中的空白

-h					#识别单位(例如内存单位)后排序
-z					#以 NUL 字符而非换行符作为行尾分隔符

-M					#以月份排序
-R					#随机排序

#当使用sort进行去重和排序时,需要先去重再排序。因为sort的去重会重新排序内容(但会遍历寻找所有重复项)

1.6.3 去重 uniq

​ 命令uniq的作用是从输入中删除前后相接的重复行,常和sort配合使用。若重复行不相接,则无法去重

uniq [选项] <参数>
#选项
-c					#显示每行出现的次数
-d					#只显示有重复的行
-D					#显示所有重复行具体的内容
-u					#仅显示不重复的行
-z					#以 NUL 字符而非换行符作为行尾分隔符

1.6.4 比较文件

1.6.4.1 diff

​ 命令diff用于比较两个文件之间的区别

diff [选项] <文件1> <文件2>
#选项
-u					#输出"统一的(unified)"diff格式文件,最适用于补丁文件

1.6.4.2 patch

​ 命令patch用于根据补丁文件**(diff -u)**中记录的差异信息,将更改应用到原始文件上,从而将原始文件更新为新的版本。使用时需要谨慎,因为这会直接修改目标文件。

patch [选项]  <原始文件> <补丁文件>
#选项
-b					#创建备份文件。在修改原始文件前会先beifen
-i					#接文件名,从文件中读取补丁
-o					#将根据补丁修改后的内容指定到另一个文件中,不会更改原文件

1.6.4.3 vimdiff

​ 命令vimdiff的作用相当于vim -d。打开多个文件并对比文件之间的不同

1.6.4.4 cmp

​ 命令cmp用于查看二进制文件的不同。只会输出不同的具体位置,不会输出内容

1.6.5 文本内容转换 tr

​ 命令tr的英文是"transform",即转换的意思。该命令的作用是将字符进行替换、压缩、删除。它可以将一组字符转换成另一组字符。tr只能从标准输入中读取数据。要么将文件重定向到标准输入,要么通过管道符输入数据

tr [选项] <字符1> <字符2>
#字符1:被替换的字符
#字符2:将1中的字符替换后的字符

#参数
-s					#删除所有重复的指定字符,只保留一个。如果指定了字符2,则去重后替换为字符2
-d					#删除字符1中出现的所有字符
-c					#除了字符1中出现的所有字符都替换为字符2
-t					#不管字符1和字符2中的字符有多少,都一一对应替换(只认字符对应)

#匹配字符集

[:alnum:]			#大小写字母和数字
[:alpha:]			#大小写字母,即a-z,A-Z
[:digit:]			#数字,即0-9
[:upper:]			#大写字母,即A-Z
[:lower:]			#小写字母,即a-z
[:space:]			#空白字符
[:punct:]			#标点符号
[:print:]			#可见符号
[:xdigit:]			#十六进制

评论