【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐]

这篇具有很好参考价值的文章主要介绍了【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

👨‍🎓博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗


1、rename 批量修改文件名

首先:批量创建文件(20个)

touch test-{1..20}.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

rename 介绍:

  rename命令的功能是用于批量修改文件名称。与mv命令一次只能修改一个文件名不同,rename命令能够基于正则表达式对文件名进行批量修改,但要求是把匹配规则准确地描述给系统。

  rename命令的参数有三项:其一是当前文件名中要被修改的字符,其二是其要被修改为的新字符,其三是要被执行的对象文件列表。初次可能有点难理解,动手尝试下吧~

rename 格式:

rename 原字符 新字符 文件名

rename 实例:

实例1:修改名为 test-18.txt 为 cs-18.txt

单个修改还是推荐mv命令;

rename test-18.txt cs-18.txt test-18.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:将所有test开头的文件全部修改为abc开头的

rename test abc test*

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:将所有的txt后缀改为cfg

rename txt cfg *

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:将所有的a都改为A

rename a A *

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

2、dirname 去除文件名中的非目录部分(取路径的目录部分)

dirname 介绍:

  dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。dirname命令读取指定路径名保留最后一个/及其后面的字符,删除其他部分,并写结果到标准输出。如果最后一个/后无字符,dirname命令使用倒数第二个/,并忽略其后的所有字符。dirname 和 basename 通常在 shell 内部命令替换使用,以指定一个与指定输入文件名略有差异的输出文件名。

dirname 格式:

dirname [参数]

dirname 实例:

实例1:去除 // 的非目录部分结果为 / :

dirname //

#结果为
/

实例2:去除 /a/b/ 的非目录部分结果为 /a :

dirname /a/b/

#结果为
/a

实例3:去除 a 的非目录部分结果为 :

dirname a

#结果为
.

实例4:去除 a/b 的非目录部分结果为路径名 a :

dirname a/b

#结果为
a

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

3、basename 显示文件路径名的基本文件名(取路径中的文件名)

basename 介绍:

  basename命令主要用于显示文件路径名剔除目录部分后的显示文件名。如何指定了后缀参数suffix,同时也删除文件的扩展名。其中,name是文件的路径名,suffix是文件名的后缀。

basename 格式:

basename [参数]

basename 实例:

显示文件路径名/usr/bin/lcy的基本文件名lcy:

basename /usr/bin/lcy

#结果为
lcy

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

4、cut 按列提取文件内容(切割文本内容)

cut 介绍:

  cut命令的功能是用于按列提取文件内容。常用的grep命令仅能对关键词进行按行提取过滤,而cut命令则是可以根据指定的关键词信息,针对特定的列内容进行过滤。

cut 格式:

cut [参数] 文件名
cat 文件名 | cut [参数]

常用参数:

参数 解析
-d 指定分隔符
-f 指定取第几段,与-d一起使用
-b 按字节进行切割(一般是英文)
-c 按字符进行切割(一般是中文)

cut 实例:

实例1:以冒号为间隔符,仅提取指定文件中第一列的内容:

cat /etc/passwd | cut -d : -f 1
cut -d : -f 1 /etc/passwd

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:仅提取指定文件中每行的前4个字符:

cat /etc/passwd | cut -c 1-4
cut -c 1-4 /etc/passwd

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:以空格为单位切割只要成功、失败两个字

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

cat a.txt | cut -d " " -f 1 | cut -c 4-5

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:切割passwd中只有root四个字

head -1 /etc/passwd | cut -d ":" -f 1	

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

5、sort 对文件内容进行排序

sort 介绍:

  sort命令的功能是对文件内容进行排序。有时文本中的内容顺序不正确,一行行的手动修改实在太麻烦了。此时使用sort命令就再合适不过了,它能够对文本内容进行再次排序。

sort 格式:

sort [参数] 文件名
cat 文件名 | sort [参数]

常用参数:

参数 解析
-n(number) 以数字为单位进行排序
-r 降序排
-t 指定分隔符,默认是空格
-k 以某段进行排序
-b 忽略每行前面出现的字符
-c 检查文件是否已经按照顺序排序
-d 除字母、数字及空格字符外,忽略其他字符
-f 将小写字母视为大写字母
-h 以更易读的格式输出信息(以人类可读的方式)
-i 除040至176之间的ASCII字符外,忽略其他字符
-m 将几个排序号的文件进行合并
-M 将前面3个字母依照月份的缩写进行排序
-o 将排序后的结果写入指定文件
-R 依据随机哈希值进行排序
-T 设置临时目录
-z 使用0字节结尾, 而不是换行

sort 实例:

实例1:整体文件内容排序(优先空格–>数字–>字母–>中文)

不加任何参数默认只给首字母排序

sort a.txt
cat a.txt | sort

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令
【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:文本中数字从大到小排序(降序)

sort -nr a.txt
cat a.txt | sort -nr

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:文本中数字从小到大排序(升序)

sort -n a.txt
cat a.txt | sort -n

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:以冒号(:)为间隔符,对指定的文件内容按照数字大小对第3列进行排序(降序)

sort -t : -k 3 -n /etc/passwd

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

6、uniq 去除文件中的重复内容行(去重 相邻 的重复行)

uniq 介绍:

  uniq命令来自英文单词unique的缩写,中文译为独特的、唯一的,其功能是用于去除文件中的重复内容行。uniq命令能够去除掉文件中相邻的重复内容行,如果两端相同内容中间夹杂了其他文本行,则需要先使用sort命令进行排序后再去重复,这样保留下来的内容就都是唯一的了。

uniq 格式:

uniq [参数] 文件名
cat 文件名 | uniq [参数]

常用参数

参数 解析
-c 统计,显示每行在文本中重复出现的次数
-d 设置每个重复纪录只出现一次
-u 仅显示没有重复的纪录
-D 显示所有相邻的重复行
-f 跳过对前N个列的比较
-i 忽略大小写
-s 跳过对前N个字符的比较
-w 仅对前N个字符进行比较
-z 设置终止符(默认为换行符)

uniq 实例:

文本原文

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例1:去除相邻的重复行,并显示重复次数

uniq -c a.txt
cat a.txt | uniq -c

前面的3、1代表的是统计的 相邻 重复行次数。

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

可以看到有几个也是一样的,但是没有进行统计,那是因为他们不是相邻的行,这时候我们可以结合sort命令排序来进行统计;

cat a.txt | sort -n | uniq -c

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:只统计没有重复的相邻的行的数据

uniq -u a.txt
cat a.txt | uniq -u

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:只统计重复的相邻的行的数据

cat a.txt | uniq -d 
uniq -d a.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:忽略大小写去除相邻相邻的重复行,并显示重复次数

初始数据:

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

uniq -ic a.txt
cat a.txt | uniq -ic

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

7、tee 读取标准输入的数据(双重重定向)

默认覆盖到文件中

tee 介绍:

tee命令的功能是用于读取标准输入的数据,将其内容转交到标准输出设备中,同时保存成文件,并在页面上显示出来。

tee 格式:

tee [参数] 文件名
cat 文件名 | tee [参数]

常用参数

参数 解析
-a 追加
-i 忽略中断信号
-p 诊断写入非管道的错误

tee 实例:

实例1:执行uptime指定的命令,并将其执行结果即输出到屏幕,又写入到文件中

uptime | tee cs.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:将要输入的结果即输出到屏幕上,又追加到cs.txt中

echo "123123" | tee -a cs.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:随机输出1-50之间的随机数,将结果输出到屏幕上,并追加到cs.txt文件中

echo $((RANDOM%50+1)) | tee -a cs.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

8、tr 字符转换工具(字符串替换)

tr 介绍:

tr命令来自英文单词“transform”的缩写,中文译为“转换”,其功能是用于字符转换。tr命令是一款批量字符转换、压缩、删除的文本工具,但仅能从标准输入中读取文本内容,需要与管道符或输入重定向操作符搭配使用。

tr 格式:

tr [参数] 原字符串 替换的字符串
ehco "字符串"|tr "原字符串" "替换的字符串"

常用参数

参数 解析
-c 排除某个字符替换其他字符
-d 删除指定的字符串
-s 去除相邻重复的字符
-t 将字符串1截断为字符串2的长度

tr 实例:

实例1:直接展示输出abc,将abc替换为大写的ABC

echo "abc" | tr "abc" "ABC"

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:将文本中的小写的test全部变为大写的TEST

这个转换并没有起到修改的作用,因此看着是都转换了,但文本中还是小写的。

cat a.txt | tr "test" "TEST"

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:输出一长串字符串,只删除a-z的字母,其他都留着

echo "aaaaaaaaabbbbbbbbbbbbbbbbbb1c2c3cc" | tr -d "a-z"
echo "aaaaaaaaabbbbbbbbbbbbbbbbbb1c2c3cc" | tr -d [a-z]

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:去除相邻的相同字符,只保留一个

echo "aaaaaaaabbbbbbbccccccc" | tr -s "a-z"
echo "aaaaaaaabbbbbbbccccccc" | tr -s [a-z]

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例5:只保留字符abc,其余字符都替换成逗号

echo "aaaaaaaaabbbbbbbbbbbbbbbbbb1c2c3cc" | tr -c "abc" ","

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例6:将所有的a-z的小写,全部替换为大写

cat a.txt | tr [a-z] [A-Z]
tr [a-z] [A-Z] < a.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

9、join 连接两个文件–>以某列为主,相同合并两个文件(不相同的话先排序)

join 介绍:

join的连接操作简言之就是将两个具有相同域的纪录给挑选出来,再将这些纪录所有的域放到一行。

注意:join在对两个文件进行连接时,两个文件必须都是按照连接域排好序的,按其他域排序是无效的。

join 格式:

join [参数] [文件1] [文件2]

常用参数

参数 解析
-a1或-a2 除了显示共同域的纪录之外,-a1显示第一个文件没有共同域的纪录,-a2显示第二个文件中没有共同域的纪录
-i 忽略大小写
-o 设置结果显示的格式
-t 改变域的分隔符
-v1或-v2 不显示共同域的纪录之外,-v1显示第一个文件没有共同域的纪录,-v2显示第二个文件中没有共同域的纪录
-1或-2 -1用来设置文件1连接的域,-2用来设置文件2连接的域

join 实例:

实例1:将两个文件的具有共同域的记录连接在一起

[root@localhost lcy]# cat file.db 
A li:20:men:anhui
B wang:21:women:jiangsu
C zhang:22:men:anhui
D liu:23:women:Shanghai
E chen:23:women:Hefei
[root@localhost lcy]# cat filecs.db 
A li:Song
B wang:shopping
C zhang:pingpong
D liu:chess
E Wang:reading
[root@localhost lcy]# join -t ":" file.db filecs.db 
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:-a1还显示第一个文件中没有共同域的纪录,-a2则显示第二个

文本内容:

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

[root@localhost lcy]# join -t ":" -a1 file.db filecs.db 
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess
E chen:23:women:Hefei
[root@localhost lcy]# join -t ":" -a2 file.db filecs.db 
A li:20:men:anhui:Song
B wang:21:women:jiangsu:shopping
C zhang:22:men:anhui:pingpong
D liu:23:women:Shanghai:chess
E Wang:reading

实例3:设置指定格式的域来显示出来(将具有共同纪录的域按照姓名+性别+爱好的格式显示出来)

[root@localhost lcy]# join -t ":" -o 1.1 1.3 2.2 file.db filecs.db 
A li:men:Song
B wang:women:shopping
C zhang:men:pingpong
D liu:women:chess

10、paste 合并两个文件–>合并文件的列,把每个文件以列队列的方式合并显示

paste 介绍:

paste命令来自英文单词“粘贴”,其功能是用于合并两个文件。paste命令能够将两个文件以列对列的方式进行合并,相当于是把两个不同的文件内容粘贴到了一起,形成新的文件,如需先将内容合并成一行,再以行粘贴的方式合并,可以用-s参数搞定。

paste 格式:

paste [参数] 文件名1 文件名2

常用参数

参数 解析
-d 设置自定义间隔符【指定连接符】
-s 将每个文件粘贴成一行【将文件多行变成一行输出】
- - 从标准输入中读取数据

paste 实例:

实例1:将2行字符串修改为1行,在第一行后面添加=用于连接第二行

文本初始内容:

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

#以=和\n轮流做分隔符
paste -sd '=' a.txt
#一个-表示读入一行
paste -d '=' - - < a.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:将2个文件进行合并

[root@localhost lcy]# cat a.txt 
aaa
bbb
ccc
ddd
eee

[root@localhost lcy]# cat b.txt 
AAA
BBB
CCC
DDD
EEE

[root@localhost lcy]# paste a.txt b.txt 
aaa	AAA
bbb	BBB
ccc	CCC
ddd	DDD
eee	EEE

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:将2个文件进行合并,并添加:为分隔符

paste -d ':' a.txt b.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:将每个文件的内容转为一行,在进行合并

paste -s a.txt b.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

11、split 分割文件内容

split 介绍:

  split命令来自英文单词“分裂”,其功能是用于分割文件内容。Linux系统运维人员可以使用split命令对指定的大文件进行内容分割,默认会按照每1000行切割成一个小文件来执行,也可以自定义分割大小,方便阅读和传输。

split 格式:

split [参数] 文件名 [要修改的文件名前缀]

常用参数:

参数 解析
-数字 设置要分割的行数
-a 设置后缀长度
-l 以行为单位进行切割
-b 以字节为单位进行切割
-C 保持每行的完整性
-d 以数字做后缀而不是字母
-t 设置间隔符
–verbose 显示执行过程详细信息

split 实例:

实例1:文件"a.txt"每6行切割成一个文件

split -6 a.txt	

将文件中的文字以每6行切割为一份文件,切割成多个以"x"开头的小文件。

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

linux中split命令切割出来的文件名为什么是xaa、xab之类的????

在 Linux 中,split 命令用于将文件分割成指定大小的较小文件。默认情况下,split 命令会以字母序列来命名分割后的文件,第一个文件会被命名为 x,第二个文件会被命名为 aa,第三个文件会被命名为 ab,以此类推。

这是因为在 Linux 中,split 命令默认使用 6 位数来表示文件名,其中前两个字符用于表示文件大小,后四个字符用于表示文件名的唯一性。例如,如果原始文件名为 example.txt,则第一个分割后的文件可能会被命名为 xaa.txt,第二个分割后的文件可能会被命名为 xab.txt,以此类推。

可以通过在 split 命令中使用 -d 选项来指定使用数字序列来命名文件,例如:

实例2:切割文件以字节为单位10字节,以lcy作为前缀,以数字作为后缀

split -d -b 10 a.txt lcy_

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

在上面的例子中,-d 选项用于指定使用数字序列来命名文件,-b 10 选项用于指定每个分割后的文件大小为 10字节,a.txt 是要分割的文件名,lcy_ 是用于指定前缀的字符串。这样,第一个分割后的文件会被命名为 lcy_00,第二个分割后的文件会被命名为 lcy_001,以此类推。
当然,其他单位也可以,比如m(兆比)或者k(K比),split -d -b 10k a.txt lcy_ && split -d -b 10m a.txt lcy_

实例3:以行为单位、以lcy.为单位进行切割

split -l 5 a.txt lcy.

以行为单位,每五行切割一次,以lcy.为前缀,后缀为默认,默认从aa开始。

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:以行为单位、以lcy.为单位、并设置后缀为4为数字进行切割

split -l 5 -a 4 -d a.txt lcy.

以行为单位,每五行切割一次,以lcy.为前缀,后缀为数字形式,后缀长为4位数;

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

12、diff / vimdiff [多]文本比较

diff / vimdiff 介绍:

diff介绍:

  diff命令来自英文单词“different”的缩写,其功能是用于比较文件内容差异。如果有多个内容相近的文件,如何快速定位到不同内容所在位置?此时用diff命令就再合适不过了~!

vimdiff介绍:

  vimdiff命令来自英文词组“Vim differences”的缩写,其功能是用于同时编辑多个文本文件。对纯文本文件的比较和合并工具一直是软件开发过程中比较重要的组成部分,vimdiff命令能够比较多个文本文件之间的差异并快速定位,并很容易地进行文件合并操作。

diff的区别和vimdiff的区别:

  • diff 是可以直接将不同的文件输出出来,就是对于新手不友好,看不出来是哪个文件少东西或者不一样,而且diff最多支持两个文件做比较。
  • vimdiff 是可以清晰的看出哪个文件少什么东西,或者是那行和哪行不一样,非常的清晰,而且还支持多文件比较,是非常友好的,但是就是退出有点麻烦,必须执行:q!退出。
  • 总结及推荐 各有各的好,但我还是推荐使用 vimdiff

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

diff / vimdiff 格式:

diff [参数] 文件名1 文件名2
vimdiff [参数] 文件名1 文件名2 [文件名N]

diff / vimdiff 实例:

实例1:diff 比较两个文件

diff a.txt b.txt

看不出来是哪个少东西,很不友好。

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:vimdiff 比较两个文件

vimdiff a.txt b.txt 

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:vimdiff 比较多个文件

vimdiff a.txt b.txt c.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

13、xagrs 给其他命令传参数的过滤器

将字符结果转化为参数传递个后命令,通常与管道连用

xagrs 介绍:

  xargs命令来自英文词组“extended arguments”的缩写,其功能是用于给其他命令传递参数的过滤器。xargs命令能够处理从标准输入或管道符输入的数据,并将其转换成命令参数,也可以将单行或多行输入的文本转换成其他格式。
  xargs命令默认接收的信息中,空格是默认定界符,所以可以接收包含换行和空白的内容。

xagrs 格式:

xargs [参数] [文件名]
命令 | xargs [参数]

常用参数:

参数 解析
-a 设置从文件中读取数据
-d 设置自定义定界符
-I 设置替换字符串
-n 设置多行输出;将标准输出的文本内容,多行转换一行,默认是空格隔开
-p 执行命令前询问用户是否确认
-r 如果输入数据为空,则不执行
-s 设置每条命令最大字符数
-t 显示xargs执行的命令
-i 以大括号保存管道前命令的执行结果

xagrs 实例:

实例1:删除/home/lcy/下的所有的a.txt文件

find /home/lcy/ -name "a.txt" |xargs rm -rf

实例2:删除/application/log/下的一天前的日志,类型为目录

find /application/log/ -mtime +0 -type d | xargs rm -rf

实例3:默认以空格为分割符,以多行形式输出文件内容,每行显示三段内容值:

cat a.txt | xargs -n 3

实例4:指定字符:为定界符,默认以单行的形式输出字符串内容:

cat a.txt | xargs -d ":"

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

14、rev 将文件中的每行内容反序输出(以列为单位)

rev 介绍:

使用rev命令可以把每一行字符的顺序颠倒过来显示文件内容

cat、tac、rev区别:

cat 为查看文件
tac 为反向查看文件(将文件倒过来看,行从后往前)
rev 文件内容反序输出(以列为单位,列从后往前)

rev 格式:

rev [文件]

rev 实例:

将a.txt每一行字符的顺序颠倒过来显示文件内容:

rev a.txt

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

15、shuf 产生随机的排列(指定输出内容,随机输出没有顺序)

shuf 介绍:

shuf命令将输入的内容随机排列并输出。 shuf命令当没有文件或文件为-时,读取标准输入。

shuf 格式:

shuf [参数] 

常用参数:

参数 解析
-e 将每个ARG视为输入行
-r 重复输出行 [可以重复]
-n 指定输出多少行
-i 将数字范围LO(最低)到HI(最高)之间的作为输入行

shuf 实例:

实例1:打乱顺序输出1-10

shuf -i 1-10	

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例2:打乱顺序输出1-10并只显示5行

shuf -n 5 -i 1-10

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例3:模拟硬币抛掷,获取前10个结果:

shuf -r -n 10 -e "正面" -e "反面"

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

实例4:模拟体彩超级大乐透:

shuf -i 1-35 -n 5 | sort -n && shuf -i 1-12 -n 2 | sort -n

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

16、Shell脚本的调式

方法一:set 方式

  • 可以在脚本中使用调式,在脚本中可以使用全部调式也可以只调试自己想要的部分;(有调试少部分代码时会使用)
  • 可以在执行脚本时使用调试。(个人习惯使用)

bash
-n 将脚本读取一次,用于检测语法错误;
-x 执行每一条命令和结果依次打印;
-v 一边执行脚本,一边打印脚本。

测试:

脚本内容:

#!/bin/bash

email=$(netstat -lnt | grep 25 | wc -l)

if [ $email -ge 1 ];then
	echo "端口已开启"
else
	echo "端口未开启"
fi

脚本 外 使用调式

-x 打印出执行脚本的过程

sh -x cs.sh

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

很清晰可以看到每一步执行的操作;

-n 测试脚本语法是否有问题

sh -n cs.sh

我们来修改一下脚本,将脚本的if判断的;分号去掉测试;

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

-v 一边执行脚本,一边打印脚本

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

脚本 内 使用调式

-x 打印出执行脚本的过程

如果对某一段进行调试,在那一段前面加一个set -x,后面加set +x。

if [ 1 -eq 1 ];then
	set -x #检测s
	echo0
	set +x #禁止检测
fi

如果是全局调式,可以直接在最上面加个set -x

#!/bin/bash

#调式
set -x 

if [ 1 -eq 1 ];then
	echo 0
fi

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

-n 测试脚本语法是否有问题

#!/bin/bash

#调式
set -n 

if [ 1 -eq 1 ];then
	echo 0
fi

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

0 则为上条命令成功没有报错;

-v 一边执行脚本,一边打印脚本

#!/bin/bash

#调式
set -v 

if [ 1 -eq 1 ];then
	echo 0
fi

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

方法二:bashdb 第三方调试工具

bashdb是一个类GDB的调试工具,使用GDB的同学使用bashdb基本无障碍
bashdb可以运行断点设置、变量查看等常见调试操作 (这是非常好的一个功能)

bashdb需要单独安装

bashdb的安装

#拉取安装包
wget https://sourceforge.net/projects/bashdb/files/bashdb/4.4-0.94/bashdb-4.4-0.94.tar.gz

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

如果出现这个报错,可以在最后添加-no-check-certificate

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

#解压压缩包
tar xf bashdb-4.4-0.94.tar.gz
#进入解压目录
cd bashdb-4.4-0.94
#编译
./configure

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

如果出现此报错,说的时没有编译环境,需要安装一下gcc gcc-c++命令,编译环境;

yum -y install gcc gcc-c++

安装完再次编译即可;

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

这样就编译完成了。

#安装
make && make check && make install 

安装完成之后,查看版本

bashdb --version

【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐],《Linux从入门到精通》,linux,java,数据库,shell脚本,文本处理命令

这样就安装完成了;

bashdb的使用

使用方法:

bashdb --debug 脚本名

常用参数:

一、列出代码和查询代码类:
l  列出当前行以下的10行
-  列出正在执行的代码行的前面10行
.  回到正在执行的代码行
w  列出正在执行的代码行前后的代码
/pat/ 向后搜索pat
?pat?向前搜索pat

二、Debug控制类:
h     帮助
help  命令 得到命令的具体信息
q     退出bashdb
x     算数表达式 计算算数表达式的值,并显示出来
!!    空格Shell命令 参数 执行shell命令
使用bashdb进行debug的常用命令(cont.)

三、控制脚本执行类:
n   执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
s n 单步执行n次,遇到函数进入函数里面
b   行号n 在行号n处设置断点
del 行号n 撤销行号n处的断点
c   行号n 一直执行到行号n处
R   重新启动当前调试脚本
Finish 执行到程序最后
cond n expr 条件断点

具体怎么用,我也没用过,大家可以去百度查一下;后续如果有用到的话我会补齐的!!!文章来源地址https://www.toymoban.com/news/detail-640411.html

到了这里,关于【Linux】常用的文本处理命令详解 + 实例 [⭐实操常用,建议收藏!!⭐]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【23JavaScript 正则表达式】深入解析JavaScript正则表达式:基础概念、常用方法和实例详解,轻松掌握强大的文本模式匹配工具

    正则表达式是一种强大的文本模式匹配工具,用于在字符串中搜索和操作特定的文本模式。在JavaScript中,正则表达式提供了一种灵活的方式来处理字符串操作。 在JavaScript中,可以通过使用字面量表示法或RegExp对象来创建正则表达式。 字面量表示法 RegExp对象 JavaScript中的正则

    2024年02月08日
    浏览(64)
  • Linux命令200例:sort用于对文本文件进行排序的15个例子(常用)

    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过 具体的系统的命令讲解 加上 鲜活的实操案

    2024年02月14日
    浏览(84)
  • 【Linux】firewall-cmd之防火墙简介及命令详解【附加实战⭐建议收藏!!⭐】

    【Linux】firewall-cmd之防火墙简介及命令详解+实例   在CentOS 7中,新引入了firewalld防火墙,取代了CentOS 6之前的iptables防火墙。   iptables用于过滤数据包,属于网络层防火墙。iptables主要是基于接口,来设置规则,从而判断网络的安全性。   firewalld能够允许哪些服务可用,

    2024年02月02日
    浏览(45)
  • Linux:管道命令与文本处理三剑客(grep、sed、awk)

    众所周知,bash命令执行的时候会输出信息,但有时这些信息必须要经过几次处理之后才能得到我们想要的格式,此时应该如何处置?这就牵涉到 管道命令(pipe) 了。管道命令使用的是 | 这个界定符号。另外,管道命令与连续执行命令是不一样的,这点下面我们会说明。 我们先

    2023年04月18日
    浏览(53)
  • 【Linux系统基础快速入门详解】Linux核心find命令原理详解和每个命令使用场景以及实例

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) find 命令是在 Linux 操作系统中用于搜索文件和目录的命令行工具。它可以根据不同的条件来搜索特定的文件和目录,这些条件可以是文

    2024年02月07日
    浏览(67)
  • 【Linux系统进阶详解】Linux核心命令深度实战实现原理详解和每个命令使用场景以及实例分析

    在Linux系统中, find 、 xargs 、 sed 、 grep 、正则表达式和通配符是非常常用的命令和技巧。它们可以结合使用,实现更复杂的文件查找、过滤和操作。下面将详细介绍它们的实现原理和使用场景。 find命令 ``find`命令通过遍历指定目录及其子目录来查找符合条件的文件或目录。

    2024年02月08日
    浏览(226)
  • 玩转文本统计利器:Linux wc命令详解与实用技巧

      原创2023-06-04 23:56·程序猿食堂 玩转文本统计利器:Linux wc命令详解与实用技巧 Linux  的  wc  命令是一个用于统计文件内容的实用工具。它主要用于计算文件中的字节数、单词数和行数。这些统计信息对于文本文件的分析和处理非常有用。 wc 命令的基本语法如下: 其中,选

    2024年02月10日
    浏览(53)
  • 【Linux命令行与Shell脚本编程】第十八章 文本处理与编辑器基础

    文本处理 学习sed编辑器 sed编辑器基础命令 gawk编辑器入门 sed编辑器基础 shell脚本可以将文本文件中各种数据的日常处理任务自动化Linux中的sed和gawk两款工具能够极大地简化数据处理任务。 想要即时处理文本文件中的文本,有一个可以自动格式化、插入、修改或删除文本元素

    2024年02月13日
    浏览(52)
  • Linux常用命令之find命令详解

    find命令主要用于:用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。 如果使用该命令时,不设置任何参数,则find命令将在 当前目录 下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 是我们在日常维护Linux时必备的一个

    2024年02月03日
    浏览(37)
  • Linux grep命令教程:强大的文本搜索工具(附案例详解和注意事项)

    grep (Global Regular Expression Print)命令用来在文件中查找包含或者不包含某个字符串的行,它是强大的文本搜索工具,并可以使用正则表达式进行搜索。当你需要在文件或者多个文件中搜寻特定信息时,grep就显得无比重要啦。 grep命令在几乎所有的Linux发行版中都可以使用。以下是

    2024年01月18日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包