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.
相关推荐
Zfox_12 分钟前
【Linux】进程信号全攻略(二)
linux·运维·c语言·c++
安於宿命17 分钟前
【Linux】简易版shell
linux·运维·服务器
黄小耶@29 分钟前
linux常见命令
linux·运维·服务器
叫我龙翔30 分钟前
【计网】实现reactor反应堆模型 --- 框架搭建
linux·运维·网络
古驿幽情32 分钟前
CentOS AppStream 8 手动更新 yum源
linux·运维·centos·yum
BillKu33 分钟前
Linux(CentOS)安装 Nginx
linux·运维·nginx·centos
BillKu36 分钟前
Linux(CentOS)yum update -y 事故
linux·运维·centos
a2663789641 分钟前
解决yum命令报错“Could not resolve host: mirrorlist.centos.org
linux·运维·centos
2739920292 小时前
Ubuntu20.04 安装build-essential问题
linux
wowocpp5 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu