Linux 中的 tr 命令:6 个有用的示例
Linux 中的 tr 命令用于将一组字符执行简单但有用的转换为另一组字符。了解 tr 命令的一些实际示例。
tr 命令中的“tr”代表翻译。这个漂亮的命令用于将一种类型的字符转换为另一种类型的字符。例如,如果您想将文本转换为全部大写或全部小写,则可以使用 tr 命令。
tr 命令足以进行简单快速的翻译,但它无法与 awk 或 sed 命令的强大功能相匹配。
Linux中tr命令的实际例子
tr 命令具有以下语法:
tr [options] charset1 [charset2]
这些是 tr 命令的有用选项:
-d :删除第一组中的字符
-c :补全第一组字符,即仅对第一组之外的字符进行操作
-s :删除第一组中多个相邻出现的字符
-t :截断第一组
让我们看看如何在各种用例中使用 tr 命令及其选项。
1. 将小写转换为大写,反之亦然
tr 命令最流行的用途之一是转换大小写。首先让我使用 cat 命令来显示示例文件中的文本。
abhishek@linux:~$ cat sample.txt
This is my life
and my file
现在,如果您想将文本转换为全部大写字母,您需要执行以下操作:
cat sample.txt | tr 'a-z' 'A-Z'
这是上述命令的输出:
abhishek@linux:~$ cat sample.txt | tr ‘a-z’ ‘A-Z’
THIS IS MY LIFE
AND MY FILE
您还可以在此处使用字符类:
abhishek@linux:~$ cat sample.txt | tr [:lower:] [:upper:]
THIS IS MY LIFE
AND MY FILE
要将文本转换为全部小写,您只需交换字符集:
cat sample.txt | tr 'A-Z' 'a-z'
2. 用一组字符替换另一组字符
在上面的示例中,您将小写字母转换为大写字母。同样,您可以将一组字符替换为另一组字符。匹配是在一对一的基础上完成的。
让我用这个例子来解释一下:
abhishek@linux:~$ 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’。
此方法的一个实际示例是将() 替换为 {} 或将下划线 (_) 替换为破折号 (-) 之类的。在 Linux 中您也可以用同样的方式将制表符转换为空格。
3. 删除特定字符
如果要删除特定字符,可以使用 tr 命令的 -d 选项:
abhishek@linux:~$ cat sample.txt | tr -d ‘is’
Th my lfe
and my fle
在上面的示例中,“i”和“s”的所有实例都已被删除。如果您期望只删除“is”,那么您就错了。这就是为什么 sed 命令在文本操作方面是更好的选择。
4.删除重复字符,例如多个空格
假设您的文本有多个空格,并且您想要将多个空格替换为单个空格。
我将在此处使用 echo 命令作为示例文本:
abhishek@linux:~$ echo “Text has too many spaces” | tr -s ” “
Text has too many spaces
您还可以将多次出现的某个字符替换为另一个字符。例如,您可以用分号 (;) 替换所有出现的空格。
abhishek@linux:~$ echo “Text has too many spaces” | tr -s ” ” “;”
Text;has;too;many;spaces
5.删除所有非数字字符
假设您的文本同时包含字母和数字,并且您只想保留数字。您可以使用补充选项 -c 并将其与删除选项 -d 结合使用。
abhishek@linux:~$ echo “Phone number is 123456789” | tr -cd [:digit:]
123456789
6. 截断搜索模式
选项 -t 对于截断搜索模式很有用。假设第一组字符比第二组字符大。在这种情况下,第二组中的最后一个字符将替换第一组中的所有剩余字符。
让我用这个例子来解释一下:
abhishek@linux:~$ cat sample.txt | tr ‘isef’ ’12’
Th12 12 my l122
and my 21l2
在上面的示例中,'i' 被替换为 1,所有 s、e 和 f 被替换为 2。如果使用截断选项 -t,它将截断 'is' 处的第一组字符以及剩余的 e 和f 将保持不变:
abhishek@linux:~$ cat sample.txt | tr -t ‘isef’ ’12’
Th12 12 my l1fe
and my f1le
Unix/Linux 中可能还有许多其他 tr 命令的示例。本教程解释了一些利用该命令的各种选项的示例。你可以发挥你的想象力,并在各种情况下使用它们。
我希望本教程对您有所帮助。不要忘记订阅我们的每周新闻通讯并在收件箱中获取有用的 Linux 技巧。