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 技巧。

相关阅读:

Posted in: Linux