侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux下tr命令用法详解及实例:转换或删除字符的神器

Linux tr命令介绍

tr是一个用来转换或删除文件中字符的命令。它可以从标准输入读取数据,经过字符串转换后,输出到标准输出。tr的全称是translate,意思是翻译或转换。tr可以用来实现一些简单的文本处理功能,比如大小写转换,删除空白字符,替换特殊字符等。

适用的Linux版本

tr命令是一个基本的Linux命令,它适用于大多数的Linux发行版,如Ubuntu, Debian, Fedora, CentOS等。如果某些Linux系统没有安装tr命令,可以使用包管理工具进行安装。例如,在CentOS 7上,可以使用以下命令安装tr:

sudo yum install coreutils

在CentOS 8上,可以使用以下命令安装tr:

sudo dnf install coreutils

Linux tr命令的基本用法

tr命令的语法格式如下:

tr [选项]... 字符集1 [字符集2]

其中,字符集1和字符集2是一组字符或字符范围,用来指定转换或删除的对象。选项可以用来控制tr的行为,常用的选项有:

  • -c, --complement:反选字符集1,即匹配不在字符集1中的所有字符。
  • -d, --delete:删除字符集1中的所有字符,不进行转换。
  • -s, --squeeze-repeats:将连续重复的字符压缩为一个字符。
  • -t, --truncate-set1:将字符集1截断为与字符集2相同的长度。

Linux tr命令的常用选项说明

下表列出了tr命令的一些常用选项及其说明:

选项说明
-c, --complement反选字符集1
-d, --delete删除字符集1中的所有字符
-s, --squeeze-repeats压缩连续重复的字符
-t, --truncate-set1截断字符集1
--help显示帮助信息
--version显示版本信息

Linux tr命令的实例

下面给出了一些使用tr命令的实例:

  • 将文件中的小写字母转换为大写字母:
# 假设文件test.txt中的内容为:
# hello world
# this is a test

# 使用tr命令将小写字母转换为大写字母,并输出到标准输出:
cat test.txt | tr a-z A-Z

# 输出结果为:
HELLO WORLD
THIS IS A TEST
  • 将文件中的数字替换为星号:
# 假设文件test.txt中的内容为:
# my phone number is 1234567890
# my id number is 9876543210

# 使用tr命令将数字替换为星号,并输出到标准输出:
cat test.txt | tr 0-9 '*'

# 输出结果为:
my phone number is **********
my id number is **********
  • 删除文件中的空白字符(空格,制表符,换行符等):
# 假设文件test.txt中的内容为:
# hello world  
# this is a test

# 使用tr命令删除空白字符,并输出到标准输出:
cat test.txt | tr -d '[:space:]'

# 输出结果为:
helloworldthisisatest
  • 压缩文件中连续重复的空白字符为一个空格:
# 假设文件test.txt中的内容为:
# hello    world  
# this   is  a   test

# 使用tr命令压缩空白字符,并输出到标准输出:
cat test.txt | tr -s '[:space:]' ' '

# 输出结果为:
hello world 
this is a test 
  • 将文件中不是字母或数字的字符替换为下划线:
# 假设文件test.txt中的内容为:
# hello-world!
# this_is_a_test.

# 使用tr命令替换非字母数字字符,并输出到标准输出:
cat test.txt | tr -c '[:alnum:]' '_'

# 输出结果为:
hello_world_
this_is_a_test_

Linux tr命令的注意事项

  • tr命令只能处理单个字符,不能处理字符串。如果需要处理字符串,可以使用sed或awk等工具。
  • tr命令只能从标准输入读取数据,不能直接操作文件。如果需要修改文件,可以使用重定向或管道等方式。
  • tr命令的字符集可以使用一些特殊的表示方式,如下表所示:
表示方式含义
\NNN八进制值为NNN的字符
\\反斜杠字符
\aCtrl-G,响铃字符
\bCtrl-H,退格字符
\fCtrl-L,换页字符
\nCtrl-J,换行字符
\rCtrl-M,回车字符
\tCtrl-I,制表符
\vCtrl-X,垂直制表符
CHAR1-CHAR2从CHAR1到CHAR2的字符范围,按照ASCII码顺序
[CHAR*]重复CHAR字符直到与另一个字符集长度相同,只能用于字符集2
[CHAR*REPEAT]重复CHAR字符REPEAT次,REPEAT为八进制数,只能用于字符集2
[:alnum:]所有字母和数字
[:alpha:]所有字母
[:blank:]所有水平空白字符
[:cntrl:]所有控制字符
[:digit:]所有数字
[:graph:]所有可打印的非空白字符
[:lower:]所有小写字母
[:print:]所有可打印的字符
[:punct:]所有标点符号
[:space:]所有水平和垂直空白字符
[:upper:]所有大写字母
[:xdigit:]所有十六进制数字

Linux tr命令的高级技巧

  • 使用tr命令加密或解密文本:
# 假设文件test.txt中的内容为:
# hello world

# 使用tr命令将每个字母替换为其后面的第三个字母,并输出到标准输出:
cat test.txt | tr 'a-z' 'd-za-c'

# 输出结果为:
khoor zruog

# 使用tr命令将加密后的文本还原,并输出到标准输出:
cat test.txt | tr 'd-za-c' 'a-z'

# 输出结果为:
hello world
  • 使用tr命令统计文件中单词的个数:
# 假设文件test.txt中的内容为:
# hello world
# this is a test

# 使用tr命令将非空白字符替换为换行符,并输出到标准输出:
cat test.txt | tr -s '[:space:]' '\n'

# 输出结果为:
hello
world
this
is
a
test

# 使用wc命令统计输出结果中的行数,即单词个数:
cat test.txt | tr -s '[:space:]' '\n' | wc -l

# 输出结果为:
6
  • 使用tr命令生成随机密码:
# 使用/dev/urandom设备生成随机数据,并使用base64编码,并使用tr命令删除不需要的字符,并截取前10个字符作为密码,并输出到标准输出:
cat /dev/urandom | base64 | tr -d '/+=\n' | head -c 10

# 输出结果为(每次运行可能不同):
YjRjMjU5MT
0

评论区