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.
相关推荐
雪碧聊技术9 分钟前
linux(centos7)如何执行python脚本
linux·python3·爬虫脚本·linux安装python3·linux运行爬虫脚本
lbb 小魔仙10 分钟前
Ubuntu 22.04 安装 Docker 完整步骤(附镜像加速配置)
linux·ubuntu·docker
Full Stack Developme3 小时前
Linux 多种压缩格式,优缺点和适用场景
linux·运维·服务器
旖旎夜光3 小时前
Linux(4)(下)
linux·学习
Shanxun Liao8 小时前
Cenots 7.9 配置多台 SSH 互信登陆免密码
linux·运维·ssh
j_xxx404_8 小时前
Linux:第一个程序--进度条|区分回车与换行|行缓冲区|进度条代码两个版本|代码测试与优化
linux·运维·服务器
looking_for__8 小时前
【Linux】Ext系列文件系统
linux
OliverH-yishuihan9 小时前
开发linux项目-在 Windows 上 基于“适用于 Linux 的 Windows 子系统(WSL)”
linux·c++·windows
南棱笑笑生11 小时前
20251224给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时确认ssh服务【内置dropbear】
linux·c语言·ssh·rockchip
I · T · LUCKYBOOM11 小时前
30.Firewalld-Linux
linux·运维·安全