Linux命令:cut命令、tr命令 处理文本

bash 复制代码
[root@localhost shell]# ifconfig | cut -c-10 | tr -d ' ' | tr -s '\n'
ens33:fla
in
in
et
RX
RX
TX
TX
lo:flags=
in
in
lo
RX
RX
TX
TX
[root@localhost shell]#

ifconfig输出的每行前10个字符被保留用于网络接口名称。

cut命令提取每一行的前10个字符。

tr -d ' '删除每一行的所有空格。

tr -s 'n'压缩多个换行符以生成接口名称列表。

cut命令是一个用于文本处理的实用程序,可以从文件或stdin(标准输入)中提取数据的特定列,并且支持多种选项来修改提取出来的文本。以下是cut命令的常见选项及其用法:

  1. -f:指定需要提取的列数,可以是单个列,也可以是多个列,使用逗号分隔。如:cut -f1,3 表示提取第1列和第3列。如果想选择所有的列,可以使用-f-选项。

  2. -d:指定列之间的分隔符,默认的分隔符是制表符,也可以是其他符号,如空格、冒号等。如:cut -d":" -f1,3 提取以冒号为分隔符的第1列和第3列。

  3. -s:不输出行中不包含分隔符的行,这个功能只有在结合其他命令使用时才会用到。

  4. --complement:反向提取列,提取所有未指定的列。如:cut --complement -f1 提取除第1列外的所有列。

使用示例:

1.从文件中提取文字列。

假设有一个test.txt文件,内容如下:

apple,1.00,red
banana,0.50,yellow
orange,0.80,orange

如果想要提取第1列和第3列,可以使用以下命令:

cut -d',' -f1,3 test.txt

输出结果如下:

apple,red
banana,yellow
orange,orange

2.从stdin中提取文字列。

使用echo命令生成测试数据:

echo 'apple,1.00,red
banana,0.50,yellow
orange,0.80,orange' | cut -d',' -f1,3

输出结果同上。

3.反向提取列。

cut --complement -f1 test.txt

输出结果如下:

1.00,red
0.50,yellow
0.80,orange

cut命令的-c选项用于指定需要提取的字符范围,即指定提取的列为以字符为单位的范围。例如,使用cut -c1-5命令可以提取每行文本的前5个字符。以下是-c选项常见的使用方式:

  1. 指定单个字符:使用-c选项后跟所需提取的字符位置即可,例如:cut -c 1 表示提取每行的第一个字符。

  2. 指定范围:使用-c选项后跟所需提取的字符范围,例如:cut -c 1-5 表示提取每行的前5个字符。

  3. 指定多个范围:使用-c选项后跟多个字符范围,用逗号隔开,例如:cut -c 1-5,10-12 表示提取每行的前5个字符和第10到12个字符。

  4. 使用"-"代表所有字符:使用-c选项后跟"-"表示需要提取所有的字符,例如:cut -c - 表示提取所有行的所有字符。

使用示例:

1.从文件中提取单个字符。

假设有一个test.txt文件,内容如下:

apple
banana
orange

如果想要提取每行的第一个字符,可以使用以下命令:

cut -c 1 test.txt

输出结果如下:

a
b
o

2.从文件中提取范围内的字符。

如果想要提取每行的第1到3个字符,可以使用以下命令:

cut -c 1-3 test.txt

输出结果如下:

app
ban
ora

3.从文件中提取多个范围内的字符。

如果想要提取每行的第1到3个字符和第5到6个字符,可以使用以下命令:

cut -c 1-3,5-6 test.txt

输出结果如下:

ap,e
ba,na
or,ge

4.从stdin中提取字符。

使用echo命令生成测试数据:

echo 'apple
banana
orange' | cut -c 1-3

输出结果同上。

tr命令用于转换字符,是一个非常常用的命令。它可以读取输入流并将其中一些字符替换为其他字符。以下是tr命令常用的选项:

  1. -d:删除指定的字符。

  2. -s:合并重复出现的字符。

  3. -c:将字符集中未出现的字符作为匹配字符,进行替换或删除。

  4. 字符集1/字符集2:用字符集1中的字符替换输入流中出现的字符集2中的字符。

使用示例:

5.删除指定字符。

假设有一个文件test.txt,内容如下:

Linux is an open-source operating system.

如果想要删除其中的所有小写字母a,可以使用以下命令:

tr -d 'a' < test.txt

输出结果如下:

Linux is n open-source operting system.

6.合并重复字符。

如果想要将输入流中的重复字符合并为单个字符,可以使用以下命令:

echo 'abbbccccddddd' | tr -s 'abcd'

输出结果为:

abcd

7.将字符集中未出现的字符作为匹配字符,进行替换或删除。

如果想要保留test.txt文件中所有的数字和大写字母,删除其余所有字符,可以使用以下命令:

tr -c '[:digit:][:upper:]' '\n' < test.txt

输出结果为:

L
1
O

8.字符替换。

如果想要将文件中的所有小写字母替换为大写字母,可以使用以下命令:

tr '[:lower:]' '[:upper:]' < test.txt

输出结果如下:

LINUX IS AN OPEN-SOURCE OPERATING SYSTEM.
相关推荐
2201_7611990440 分钟前
nginx 负载均衡1
linux·运维·服务器·nginx·负载均衡
suri ..1 小时前
【Linux】进程第三弹(虚拟地址空间)
linux·运维·服务器
害羞的白菜1 小时前
Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)
linux·运维·笔记·jmeter·nginx·centos·负载均衡
纪伊路上盛名在1 小时前
如何初步部署自己的服务器,达到生信分析的及格线
linux·运维·服务器·python·学习·r语言·github
Betty’s Sweet1 小时前
[Linux]:线程(三)
linux·线程·信号量·生产者消费者模型
程序员南飞3 小时前
ps aux | grep smart_webrtc这条指令代表什么意思
java·linux·ubuntu·webrtc
StrokeAce3 小时前
linux桌面软件(wps)内嵌到主窗口后的关闭问题
linux·c++·qt·wps·窗口内嵌
热爱嵌入式的小许7 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风11 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学11 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm