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.
相关推荐
且从容.8 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道8 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
且从容.11 小时前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落13 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨13 小时前
WSL2的安装与使用
linux·wsl
微小的鱼13 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng13 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮14 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky1 天前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默1 天前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu