0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Linux tr命令

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-12 17:21 次阅读

tr是Linux和Unix系统中的命令行程序,可转换,删除和压缩标准输入的字符,并将结果写入标准输出。

tr命令通常通过管道与其他命令组合使用,并且可以执行删除重复字符,将大写转换为小写以及基本字符替换和删除的操作。

在本教程中,我们将通过实际示例和最常见选项的详细说明向您展示如何使用tr命令。

tr 命令选项

tr命令的语法形式是tr OPTION... SET1 [SET2]OPTION选项是必须的参数SET是字符集合,可以是一个多个字符集合。

tr命令默认接受具有相同长度的两组字符,并用第二组中字符集合替换第一组存在的字符集合。

例如命令echo 'myfreax' | tr 'myf' 'red'm替换为ry替换为e,将f替换为d

echo 'myfreax' | tr 'myf' 'red'
redreax

也可以使用字符范围来定义字符集,减少繁琐的输入,例如你要输入lmno,可以使用l-n代替。

也就是说命令echo 'myfreax' | tr 'lmno' 'wxyz'echo 'myfreax' | tr 'l-n' 'w-z'是等价的。

echo 'myfreax' | tr 'lmno' 'wxyz'
echo 'myfreax' | tr 'l-n' 'w-z'

当使用tr命令的-c/--complement选项时,tr命令将会替换第一组不存在的所有字符。

例如命令echo 'myfreax' | tr -c 'fa' 'xy'使用y替换字符串myfreax不是f或者a的字符。

您可能已经注意到输出比输入多一个可见的字符。这是因为echo命令会打印一个不可见的换行符\\n

tr命令也将\\n字符也替换为y。为了使echo命令不打印换行符,请使用echo命令的-n选项。

echo 'myfreax' | tr -c 'fa' 'xy'
echo -n 'myfreax' | tr -c  'fa' 'xy'
yyfyyayy

tr命令的-d/--delete选项删除指定字符集合。例如命令echo 'myfreax' | tr -d 'ea'删除字符串myfreaxea字符串。

在不压缩字符的情况下删除字符时,您只能指定一组。

echo 'myfreax' | tr -d 'ea'
myfrx

-s/--squeeze-repeats选项使用最后一个字符集合替换重复出现的字符。命令echo "GNU \\ Linux" | tr -s ' '删除重复出现的空格字符。

在指定第二个字符集合时,首先使用第一个字符集合替换字符串GNU \\ Linux,然后使用第二个字符集合替换第一个字符集合。

echo "GNU     \\    Linux" | tr -s ' ' #GNU \\ Linux
echo "GNU     \\    Linux" | tr -s ' ' '_' #GNU_\\_Linux

tr 命令转换小写大写

将小写转换为大写或者大写转小写。是tr命令的典型用例之一。在指定字符集合时可以使用[:lower:]匹配小写字符,[:upper:]匹配大写字符。

除了字符类,您还可以使用范围,例如'a-z'匹配小写字符串,'A-Z'匹配大写字符。要将大写转换为小写,只需切换字符集合的位置即可。

命令echo 'myfreax' | tr 'a-z' 'A-Z'转换为大写,echo 'myfreax' | tr 'A-Z' 'a-z'转换为小写。

echo 'myfreax' | tr '[:lower:]' '[:upper:]' #MYFREAX
echo 'myfreax' | tr 'a-z' 'A-Z' #MYFREAX

tr 命令删除数字

[:digit:]代表所有数字字符,要删除数字,可以组合使用tr命令的-cd选项删除所有非数字字符。

tr命令的-c选项表示替换第一组不存在的所有字符。-s选项表示删除字符一组字符集合存在的字符。

tr -cd [:digit:]组合起来就是删除第一组字符集合不是数字的字符,如果你要删除不是数字的字符,使用[:alpha:]替换[:digit:]

echo "my phone is 123-456-7890" | tr -cd [:digit:]
1234567890

tr 命令在单词末尾插入换行符

[:alnum:]代表所有数字和字符A-Za-z,要在单词末尾插入换行符,可以组合使用tr命令的-cs选项删除所有非数字字符。

tr命令的-c选项表示替换第一组不存在的所有字符。-s选项表示使用最后一个字符集合替换重复出现的字符。-c '[:alnum:]'表示搜索所有空白字符。

tr -cs '[:alnum:]' '\\n'组合起来就是搜索所有空白字符串替换为换行符\\n

echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\\n'
GNU
is
an
operating
system

tr 命令删除空行

由于tr命令仅接受标准输入,因此必须使用标准输入重定向符号<,将标准输入的键盘替换为文件。

tr命令的-s选项表示使用最后一个字符集合替换重复出现的字符。换行符号在单行中会被以为是重复字符串。

tr -s '\\n'组合就是替换重复的换行符,由于命令没有指定第二个字符集合,因此没有字符替换。

最后> new_file.txt就是将tr命令的标准输出重定向到文件new_file.txt

tr -s '\\n' < file.txt > new_file.txt

tr 命令打印$PATH目录

$PATH环境变量是用冒号分隔的目录列表,指示Shell程序在用户运行命令时要搜索可执行文件的目录。

如要在每一行打印每个$PATH环境变量的目录,只需要将冒号:替换为换行符号即可。

echo $PATH | tr  ':' '\\n'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

结论

现在,您应该对如何使用Linux tr命令有很好的了解。tr只能使用单个字符。对于复杂的模式匹配和字符串处理应该使用sed或awk。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UNIX
    +关注

    关注

    0

    文章

    295

    浏览量

    41060
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • lunix
    +关注

    关注

    0

    文章

    3

    浏览量

    1012
收藏 人收藏

    评论

    相关推荐

    详解Linux上两个超有用重要的文本操作命令

    Linux 通过大量的命令使得文本操作和处理非常容易。像 tr 和 fmt 这样的命令行工具可以帮助您从终端更改、格式化和修改文本文件。
    发表于 11-11 09:14 385次阅读

    Linux基本命令总结

    都说Linux命令多,实际工作中我们又有多少命令会接触用到呢?本文跟大家分享Linux运维工作中常用的600个命令,可以说这些
    的头像 发表于 01-11 10:32 578次阅读

    Linux目录的创建与删除命令

    Linux目录的创建与删除命令 Linux目录的创建与删除命令  mkdir命令  功能:创建一个目录(类似DOS下的md
    发表于 01-18 12:46 1251次阅读

    Linux与用户有关的命令

    Linux与用户有关的命令 Linux与用户有关的命令  passwd命令  出于系统安全考虑,Lin
    发表于 01-18 12:46 705次阅读

    Linux的常用网络命令

    Linux的常用网络命令 Linux 的常用网络命令  计算机网络的主要优点是能够实现资源和信息的共享,并且用户可以远程访问信息。Linux
    发表于 01-18 12:47 1118次阅读

    Linux关机命令详解

    Linux关机命令详解 在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都 可以达到重启系统的目的,但每个
    发表于 01-18 12:52 3515次阅读

    Linux系统命令指南

    在“Linux 文件命令精通指南”中,我们讨论了利用最基础和最常用 Linux 文件命令所需的基本信息。在本文中,我将对 Linux 系统
    发表于 05-23 10:23 881次阅读

    Linux命令大全

    Linux命令大全
    发表于 10-30 09:49 8次下载
    <b class='flag-5'>Linux</b>的<b class='flag-5'>命令</b>大全

    linux有哪些常用的命令

     Linux命令非常之多,分为内部命令和外部命令
    发表于 02-27 08:00 4次下载
    <b class='flag-5'>linux</b>有哪些常用的<b class='flag-5'>命令</b>

    linux的scp命令怎么用_linux的grep命令用法

    linux中,scp命令用于Linux之间复制文件和目录,即在一台Linux服务器中将本地的文件上传到一台远端服务器,或将远端服务器的文件下载到本地。scp是
    发表于 09-04 15:36 4114次阅读
    <b class='flag-5'>linux</b>的scp<b class='flag-5'>命令</b>怎么用_<b class='flag-5'>linux</b>的grep<b class='flag-5'>命令</b>用法

    6个有趣的Linux命令案例讲解

    6个有趣的Linux命令案例讲解
    发表于 08-11 17:49 12次下载

    常用Linux命令介绍

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,
    的头像 发表于 02-09 14:31 835次阅读

    浅析Linux精致的命令

    这只是一小部分常用的Linux命令Linux有很多命令可以使用。建议通过man命令来查看命令
    的头像 发表于 04-24 16:28 1335次阅读

    常用Linux命令要记牢!

    linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,
    的头像 发表于 08-07 15:31 445次阅读

    shell命令linux命令一样吗

    Shell命令Linux命令并不完全一样。 首先,Shell是一种命令行解释器,它是用来解释和执行用户输入的命令的。Shell既是一种
    的头像 发表于 11-08 10:51 1375次阅读