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.
相关推荐
网络与设备以及操作系统学习使用者14 分钟前
vi与vim在openEuler中的差异及应用
linux·运维·网络·学习·vim
专注VB编程开发20年17 分钟前
python运行提速方案全解
java·linux·服务器
相思难忘成疾19 分钟前
Ubuntu 入门:安装、网络、软件一站式教程
linux·网络·ubuntu
luoqice1 小时前
linux下安装rtsp流媒体服务器
linux·音视频
学困昇2 小时前
Linux IPC 详解:匿名管道、命名管道、共享内存与信号量
linux·运维·服务器·c语言·c++·人工智能
汽车搬砖家2 小时前
VM Fusion安装Ubuntu系统
linux
AI小小怪2 小时前
保姆级教程:Ubuntu 22.04 安装 NVIDIA GPU 驱动 + CUDA 12.6(RTX 3080 显卡)
linux·nvidia·cuda
Embedded-Xin2 小时前
ROS2进阶——消息服务质量QOS策略
linux·机器人·嵌入式
Embedded-Xin2 小时前
ROS2进阶—ROS2生命周期节点
linux·机器人·自动驾驶·嵌入式
比昨天多敲两行2 小时前
Linux.基础I/O
linux