安卓系统

Linux中的Tr命令与示例

How to determine which type of backup type do you need

How to determine which type of backup type do you need

目录:

Anonim

tr 是Linux和Unix系统中的命令行实用程序,可转换,删除和压缩标准输入中的字符,并将结果写入标准输出中。

tr 命令可以执行诸如删除重复的字符,将大写转换为小写以及替换和删除基本字符的操作。 通常,它通过管道与其他命令结合使用。

在本教程中,我们将通过实际示例和最常见选项的详细说明向您展示如何使用 tr 命令。

如何使用 tr 命令

tr 命令的语法如下:

tr OPTION… SET1

tr 接受通常具有相同长度的两组字符,并用第二组中的相应字符替换第一组中的字符。

SET 基本上是一个字符串,包括特殊的反斜杠转义字符。

在下面的示例中, tr 通过将第一组字符与第二组字符进行映射,来替换标准输入(linuxize)中的所有字符。

echo 'linuxize' | tr 'lin' 'red'

l 每次出现都用 r 替换,用 e 替换 i ,用 d 替换 n

reduxeze

字符集也可以使用字符范围来定义。 例如,代替编写:

echo 'linuxize' | tr 'lmno' 'wxyz'

您可以使用:

echo 'linuxize' | tr 'ln' 'w-z'

使用 -c (-- --complement )选项时, tr 替换SET1中不存在的所有字符。

在下面的示例中,除“ li”以外的所有字符都将替换为第二组中的最后一个字符:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

您可能已经注意到,上面的输出比输入多一个可见的字符。 这是因为 echo 命令会打印不可见的换行符 ,该字符也将替换为 y 。 要回显不带换行的字符串,请使用 -n 选项。

-d (--delete)选项告诉 tr 删除SET1中指定的字符。 在不压缩字符的情况下,仅指定一组字符。

下面的命令将删除 l i z 字符:

echo 'Linuxize' | tr -d 'liz'

L 字符不会被删除,因为输入包含大写的 L 而SET中的 l 字符是小写。

Lnuxe

-s (-- --squeeze-repeats )选项用最后一个SET中的字符集替换一系列重复出现的字符。

在以下示例中, tr 删除重复的空格字符:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

使用SET2时,将SET1中指定的字符序列替换为SET2。

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

-t (-- --truncate-set1 )选项强制 tr 在执行进一步处理之前将SET1截断为SET2的长度。

默认情况下,如果SET1大于SET2, tr 将重用SET2的最后一个字符。 这是一个例子:

echo 'Linux ize' | tr 'abcde' '12'

输出显示SET1的字符 e 与SET2的最新字符 2 匹配:

Linux iz2

现在,将相同的命令与 -t 选项一起使用:

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

您可以看到SET1的最后三个字符被删除。 SET1变为“ ab”,长度与SET2相同,并且不进行替换。

组合选项

tr 命令还允许您组合其选项。 例如,以下命令首先将除 i 以外的所有字符替换为 0 ,然后再压缩重复的 0 字符:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Tr命令示例

在本节中,我们将介绍 tr 命令的一些常见用法示例。

将小写转换为大写

将小写转换为大写或反向是 tr 命令的典型用例之一。 匹配所有小写字符,并且 匹配所有大写字符。

echo 'Linuxize' | tr '' ''

LINUXIZE

除了字符类,您还可以使用范围:

echo 'Linuxize' | tr 'az' 'A-Z'

要将大写转换为小写,只需切换位置。

删除所有非数字字符

以下命令删除所有非数字字符:

echo "my phone is 123-456-7890" | tr -cd

代表所有数字字符,通过使用 -c 选项,该命令将删除所有非数字字符。 输出将如下所示:

1234567890

将每个单词换行

要将每个单词放在新行中,我们需要匹配所有非字母数字字符并将其替换为新行:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

删除空白行

要删除空白行,只需挤压重复的换行符:

tr -s '\n' < file.txt > new_file.txt

在上面的命令中,我们使用重定向符号 < 来将 file.txt 的内容传递给 tr 命令。 重定向 > 将命令的输出写入 new_file.txt

在单独的行上打印 $PATH 目录

$PATH 环境变量是用冒号分隔的目录列表,它告诉Shell键入命令时要搜索可执行文件的目录。

要在单独的行上打印每个目录,我们需要匹配冒号(:)并将其替换为新行:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

结论

tr 是用于翻译或删除字符的命令。

尽管非常有用,但是 tr 只能使用单个字符。 对于更复杂的模式匹配和字符串操作,应使用 sed awk

tr终端