linux tr命令详解
介绍
在Linux操作系统中,tr
命令是一个非常常用的文本处理工具。tr
是”translate”(翻译)的缩写,用于对标准输入文本进行字符替换、删除、压缩和截取等操作。本文将详细介绍tr
命令的各种用法,并给出相应的示例代码和运行结果。
语法
tr [OPTION]... SET1 [SET2]
参数说明
-c
:用 SET1 中未指定的字符替换所有字符。-d
:删除 SET1 中所有字符。-s
:在 SET1 中连续出现重复的字符只保留一个。-t
:将 SET1 中的字符映射为 SET2 中的字符。-C
:与-c相同,但是是针对每一个字符而不是每一个输入行进行替换。-d
:与-d相同,但是是针对每一个字符而不是每一个输入行进行删除。
SET1 和 SET2
在tr
命令中,SET1和SET2都是字符集合,SET1是需要处理的字符集合,而SET2是希望将SET1中的字符替换为的字符集合。SET1和SET2可以有以下几种形式:
c1-c2
:表示从字符c1到字符c2之间的所有字符。[c*]
:表示零个或多个c字符。[:class:]
:表示指定字符类别(如:alnum,alpha,digit,lower,print,space,upper等)。string
:表示包含在双引号中的字符串。char1[set1~set2]
:表示除了字符char1外的字符都可以出现在set1和set2中。
示例代码及运行结果
删除字符
# 删除文本中的空格
echo "Hello World" | tr -d " "
HelloWorld
# 删除文本中的数字 echo "123Hello456" | tr -d "[:digit:]"
Hello
# 删除文本中的小写字母
$ echo "Hello world" | tr -d "[:lower:]"
H
字符转换
# 将数字替换为*
echo "123Hello456" | tr "[:digit:]" "*"
***Hello***
# 将小写字母替换为大写字母 echo "Hello world" |tr "[:lower:]" "[:upper:]"
HELLO WORLD
# 替换字符串中的字符
$ echo "apple" | tr "ae" "A"
ApplA
压缩字符
# 压缩连续重复的字符为单个字符
echo "Hello world" | tr -s " "
Hello world
# 压缩重复的数字为单个数字 echo "122333444455555" | tr -s "[:digit:]"
12345
字符替换
# 使用 SET1 和 SET2 进行字符映射替换
echo "abcde" | tr "abc" "xyz"
xyzde
# 使用 SET1 进行字符映射替换 echo "apple" | tr "[:lower:]" "[:upper:]"
APPLE
# 使用 SET1 和 SET2 进行字符映射替换
$ echo "abcde" | tr "a-c" "x-z"
xyzde
字符删除
# 删除文本中的空格和数字
echo "Hello123 World" | tr -d "[:digit:] "
HelloWorld
# 删除文本中的大写字母 echo "Hello World" | tr -d "[:upper:]"
ello orld
总结
tr
命令是Linux中常用的文本处理工具,可以对字符进行替换、删除、压缩和截取等操作。本文对tr
命令的语法进行了详解,并给出了各种常见的示例代码和运行结果。通过掌握tr
命令,可以提高在Linux系统中处理文本的效率。