Contents

用TR操纵Linux中的字符串

1. 概述

在本教程中,我们将了解如何在 Linux 中使用tr 操作字符串。

请注意,我们已经使用 Bash 测试了这些命令,但应该可以在任何符合 POSIX 的终端上运行。

2. 小写转大写

首先,让我们看一下命令的概要以及如何使用该工具的预定义 SET。

tr [OPTION]... SET1 [SET2]

其中 SET1 和 SET2 分别代表一组字符, [] 内的参数表示它是可选的。tr命令通常与管道结合使用,以操作标准输入并获得处理后的标准输出。

在这种情况下,让我们将字符串从小写转换为大写

echo "Blogdemo is in the top 10" | tr [a-z] [A-Z]

该命令的输出将是:

BLOGDEMO IS IN THE TOP 10

3. 将空格转换为制表符

我们可以尝试使用tr的另一个选项是将所有出现的空格转换为 tabs,继续使用相同的示例,但为此目的进行了一些调整:

echo "Blogdemo is in the top 10" | tr [:space:] '\t'

我们将得到翻译后的字符串:

Blogdemo    is    in    the    top    10

4.删除字符

假设我们使用的是 Linux 终端,我们有字符串“Blogdemo is in the top 10”,我们想删除所有出现的字符“e”。我们可以通过指定*-d*参数和我们要从短语中删除的字符轻松地做到这一点:

echo "Blogdemo is in the top 10" | tr -d 'e'

我们的结果是:

Blogdmo is in th top 10

此外,我们可以通过将它们全部放在一个集合中来删除多个字符。假设我们要删除所有元音:

echo "Blogdemo is in the top 10" | tr -d 'aeiou'

让我们检查一下输出:

Blgdm s n th tp 10

现在,假设我们要删除短语中出现的所有数字。我们可以通过使用相同的*-d*参数加上对数字集的引用来做到这一点:

echo "Blogdemo is in the top 10" | tr -d [:digit:]

再次,我们可以看到命令的输出:

Blogdemo is in the top

5. 补集

我们还可以补充tr给我们的任何集合。

让我们继续前面删除元音的例子。如果我们不想删除元音,而是想做相反的事情——即互补操作——我们只需要添加*-c*参数就可以了:

echo "Blogdemo is in the top 10" | tr -cd 'aeiou'

现在输出将是删除除元音以外的所有字符:

oeoiieo