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.
相关推荐
_upupup9 小时前
Linux的调试工具——gdb/cgdb
linux·服务器
JeJe同学9 小时前
Docker镜像导入、容器启动
linux·运维·docker
Jason_zhao_MR9 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
闲云野鹤在人间10 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
一个风轻云淡11 小时前
GCC 和 GDB命令简单解读
java·linux·前端
H.莓飛11 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
资料库0112 小时前
Linux 8个常见运维故障排查
java·linux·运维
零基础12312 小时前
Ubuntu 常用命令汇总
linux·运维·开发语言
Android系统攻城狮13 小时前
Linux Gstreamer深度解析之gst_audio_sink_get_type调用流程与实战(六十五)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
xiaoqiMikko13 小时前
Linux 实战(一):CentOS 7、Rocky 9、Ubuntu 24.04 三台真机实测 —— 认清系统、换源、装包的版本坑
linux·centos