Linux tr 命令

Linux tr 命令帮助用户删除一组字符或将它们转换为另一个字符集。 当您知道必须替换一组字符但文件太大而无法手动进行更改时,这尤其有用。

Linux tr 命令的功能列表包括更改字符集的大小写、删除指定字符以及从字符串中压缩重复字符。 Linux tr 命令还允许系统 admin 利用基本的查找和替换功能,在与 Unix 管道一起使用时可以进行复杂的字符转换。

入门

现在我们知道了 Linux tr 命令的作用,是时候了解如何使用它了。 tr 命令的语法是:

tr [options] "char-set-1" "char-set-2" 

让我们分解 tr 命令并了解它的功能。 正如您可能已经猜到的那样,“tr”代表翻译。 接下来,我们来到’option’参数。 这个参数允许我们选择我们希望如何翻译一个字符串。

标记为“char-set-1”和“char-set-2”的参数是提供给 Linux tr 命令进行翻译的两个字符串。 tr 命令获取 set1 的字符并将其替换为来自 set2 的相应字符。

Linux tr 命令中的选项

tr 命令为我们提供了一系列选项供我们选择,这些选项将控制我们如何翻译字符集。 以下是您可以与 Linux tr 命令一起使用的一些选项:

  • -C: 用于根据输入条件补充 set1 中的字符
  • -C: 用于根据输入条件补充 set1 中的值
  • -s: 用于“挤压”最后一个操作数(set1 或 set2)中出现的所有字符的重复出现
  • -d: 用于从 set1 中删除字符
  • -u: 用于确保输出没有被缓冲
  • -t: 用于将 set1 截断为 set2 的长度

这些选项可以单独使用或组合使用,以在使用 Linux tr 命令时达到所需的结果。

指定字符集

使用 tr 命令时,某些操作可能需要指定需要转换的字符集。 在这种情况下,我们遵循以下约定。

特点:当反斜杠后使用特定字符时,它们具有特殊含义。 这里有些例子:

  • 一个:向终端发送“警报”
  • b: 退格转义序列
  • r: 回车转义序列
  • t:在字符串中添加一个制表符
  • n: 定义行尾
  • v: 添加一个垂直标签

[:class:]:这些代表属于定义的“类”的整个字符集。 以下是类名的示例列表:

  • α: 字母
  • 数字: 数字字符
  • : 字母数字字符
  • 空间: 空格
  • 降低: 小写字符
  • : 大写字符
  • 特别的: 特殊字符
  • 数字: 十六进制字符
  • [#*n]: 表示字符在字符串 ‘n’ 中代替 ‘#’ 出现的次数。 仅在 set2 中有效。

使用 Linux tr 命令

现在我们了解了 tr 命令的组成部分,是时候亲自尝试一下了。

更改字符串的大小写

使用 Linux tr 命令的最常见情况之一是用户想要将文本转换为大写或小写。 您可以将文件中的文本从小写更改为大写,如下所示。

# Passing a file as an input tr "[:lower:]" "[:upper:]" < File_Name  # Passing the echo command output to tr echo 'linuxforDeVices' | tr '[:lower:]' '[:upper:]' 
Tr 命令基本

从字符串中删除特定字符

有时我们需要从文件中存在的文本字符串中删除字符列表。 例如,当我们希望隔离存储在文件中的数字时,我们输入命令:

# Taking input from a file tr -cd [:digit:] < File_Name  #Passing echo output to Linux tr  echo "Contact helpline number 12345-1235" | tr -cd [:digit:] 

输出

123451235 

您可能会注意到,甚至换行符也从命令输出中删除

查找字符串的补码

查找字符串的补码是使用 Linux tr 命令的 -C/-c 选项完成的。 这将删除集合 1 中除命令中提及的字符之外的所有字符,并将它们替换为存在于 set2 中的字符。 这是我们可以补充给定文件中的文本的方式:

# input file tr -c 's' 'z' < File_Name   # Pass Echo command output echo 'mississippi'| tr -c 's' 'z' 

在上面的示例中,我们将所有不是字母“s”的字符替换为字母“z”。 正如您在下面的输出中看到的那样,只有字母“s”保留,而其他所有内容都变为 z。

Tr 命令补字符

列出文件中的所有单词

要列出文件中存在的所有单词,使每一行只包含一个单词,我们使用以下 Linux tr 命令:

# input file tr -cs '[:alnum:]' 'n' < File_Name  # Pass Echo command output echo 'Linux For Devices' | tr -cs '[:alnum:]' 'n' 

要对用户输入的字符串执行相同的操作,我们使用以下命令:

Tr 命令案例Tr 命令案例

将空格转换为制表符

Linux tr 命令的另一个重要用途是调整文本格式。 以下是我们如何使用该命令将给定文件中的所有空格替换为制表符:

#Passing a file tr [:space:] 't' <File_Name>  # Passing echo command output echo 'Social distancing is important'| tr [:space:] 't' 
Linux Tr 命令空间(按选项卡)Tr 命令空间按制表符

挤压重复字符

当一个字符在字符串中使用次数过多时,我们希望删除该字符的重复实例。 这是使用 Linux tr 命令的 -s 选项完成的。 以下是我们如何使用该命令从文件中删除多余的空格:

tr -s '[:space:]' < File_Name  #Passing Echo command output echo 'This sentence has extra spaces' | tr -s '[:space:]' 
Tr 空间挤压Tr 空间挤压

特别说明: 当我们执行 Linux tr 命令时,成功执行的退出状态为 0。但是,任何错误都会给您不同的退出状态。 所以在使用 tr 命令时需要注意这个细节。

结论

Linux tr 命令是一个强大的工具,可以轻松地操作字符集。 本教程介绍了 tr 命令的基础知识,但它的真正潜力只有在与 UNIX 管道一起使用时才能发挥出来。 我希望你能够理解 Linux tr 命令是如何工作的。 如果您有任何疑问或疑问,请将它们放在下面的评论部分。