Linux 中的 tr 命令示例说明

tr 命令中的“tr”代表翻译。 这个漂亮的命令用于将一种类型的字符转换为另一种类型。 为了 example如果你想将文本全部转换成大写或全部小写,可以使用 tr 命令。

tr 命令足以进行简单快速的翻译,但它与 awk 或 sed 命令的功能不匹配。

Linux中tr命令的实例

tr 命令具有以下语法:

tr [options] charset1 [charset2]

这些是 tr 命令的有用选项:

  • -d :删除第一组中的字符
  • -c :补充第一组字符,即仅对不在第一组中的字符进行操作
  • -s :删除第一组中多个相邻的字符
  • -t :截断第一组

让我们看看如何在各种用例中使用 tr 命令及其选项。

1.将小写转换为大写,反之亦然

tr 命令最流行的用途之一是转换大小写。 让我首先使用 cat 命令显示示例文件中的文本。

[email protected]:~$ cat sample.txt
This is my life
and my file

现在,如果您想将文本转换为全大写字母,您需要执行以下操作:

cat sample.txt | tr 'a-z' 'A-Z'

这是上述命令的输出:

[email protected]:~$ cat sample.txt | tr ‘a-z’ ‘A-Z’
THIS IS MY LIFE
AND MY FILE

你也可以使用 字符类 这里:

[email protected]:~$ cat sample.txt | tr [:lower:] [:upper:]
THIS IS MY LIFE
AND MY FILE

要将文本转换为所有小写,您只需交换字符集:

cat sample.txt | tr 'A-Z' 'a-z'

2. 将一组字符替换为另一组字符

在上述 example,您将小写字母转换为大写字母。 同样的方式,您可以用另一组字符替换一组字符。 匹配是逐个进行的。

让我解释一下 example:

[email protected]:~$ cat sample.txt | tr ‘ilm’ ‘tyz’
Thts ts zy ytfe
and zy ftye

在这种情况下,第一组字符被替换为第二组字符,基于每个字符。 这里’i’被’t’替换,’l’被’y’替换,’m’被’z’替换。

如果第二组小于第一组,则重复第二组的最后一个字符。 换句话说,如果你使用了 tr ‘ilm’ ‘ty’ 那么 ‘l’ 和 ‘m’ 都将被替换为 ‘y’。

一个实用的 example 这种方法的一种是将 () 替换为 {} 或将下划线 (_) 替换为破折号 (-) 类似的东西。 你也可以用同样的方法在 Linux 中将制表符转换为空格。

3. 删除特定字符

如果要删除特定字符或字符,可以使用 tr 命令的 -d 选项:

[email protected]:~$ cat sample.txt | tr -d ‘is’
Th my lfe
and my fle

在上述 example, ‘i’ 和 ‘s’ 的所有实例都已被删除。 如果您期望只删除“is”,那么您就错了。 这就是为什么 sed 命令在文本操作方面是一个更好的选择。

4.删除重复字符,如多个空格

假设您的文本有多个空格,并且您想用一个空格替换多个空格。

我将在此处对示例文本使用 echo 命令:

[email protected]:~$ echo “Text has too many spaces” | tr -s ” “
Text has too many spaces

您还可以将一个字符的多次出现替换为另一个字符。 为了 example,您可以用分号 (;) 替换所有出现的空格。

[email protected]:~$ echo “Text has too many spaces” | tr -s ” ” “;”
Text;has;too;many;spaces

5.删除所有非数字字符

假设您有包含字母和数字的文本,并且您只想保留数字。 您可以使用补充选项 -c 并将其与删除选项 -d 结合使用。

[email protected]:~$ echo “Phone number is 123456789” | tr -cd [:digit:]
123456789

6. 截断搜索模式

选项 -t 在截断搜索模式时很有用。 假设第一组字符大于第二组字符。 在这种情况下,第二组中的最后一个字符将替换第一组中所有剩余的字符。

让我用这个解释一下 example:

[email protected]:~$ cat sample.txt | tr ‘isef’ ’12’
Th12 12 my l122
and my 21l2

在上述 example ‘i’ 替换为 1,所有 s、e 和 f 都替换为 2。如果使用截断选项 -t,它将截断 ‘is’ 处的第一组字符,其余的 e 和 f 将保持不变:

[email protected]:~$ cat sample.txt | tr -t ‘isef’ ’12’
Th12 12 my l1fe
and my f1le

在 Unix/Linux 中可能有许多其他的 tr 命令示例。 本教程解释了一些利用命令的各种选项的示例。 你可以发挥你的想象力,并在各种情况下使用它们。

我希望您发现本教程对您有所帮助。 不要忘记订阅我们的每周时事通讯,并在您的收件箱中获取有用的 Linux 提示。