如何使用Linux tr命令,tr命令 2024-02-19 16:30:45 0 0 描述 tr是Linux和Unix系统中的命令行程序,可转换,删除和压缩标准输入的字符,并将结果写入标准输出。 tr命令通常通过管道与其他命令组合使用,并且可以执行删除重复字符,将大写转换为小写以及基本字符替换和删除的操作。 在本教程中,我们将通过实际示例和最常见选项的详细说明向您展示如何使用tr命令。 tr 命令选项 tr命令的语法形式是tr OPTION... SET1 [SET2]。OPTION选项是必须的参数,SET是字符集合,可以是一个多个字符集合。 tr命令默认接受具有相同长度的两组字符,并用第二组中字符集合替换第一组存在的字符集合。 例如命令echo 'myfreax' | tr 'myf' 'red'将m替换为r,y替换为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'删除字符串myfreax的ea字符串。 在不压缩字符的情况下删除字符时,您只能指定一组。echo 'myfreax' | tr -d 'ea'myfrx -s/--squeeze-repeats选项使用最后一个字符集合替换重复出现的字符。命令echo "GNU \\ Linux" | tr -s ' '删除重复出现的空格字符。 在指定第二个字符集合时,首先使用第一个字符集合替换字符串GNU \\ Linux,然后使用第二个字符集合替换第一个字符集合。echo "GNU \\ Linux" | tr -s ' ' #GNU \\ Linuxecho "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:]' #MYFREAXecho '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-Z与a-z,要在单词末尾插入换行符,可以组合使用tr命令的-cs选项删除所有非数字字符。 tr命令的-c选项表示替换第一组不存在的所有字符。-s选项表示使用最后一个字符集合替换重复出现的字符。-c '[:alnum:]'表示搜索所有空白字符。 tr -cs '[:alnum:]' '\\n'组合起来就是搜索所有空白字符串替换为换行符\\n。echo 'GNU is an operating system' | tr -cs '[:alnum:]' '\\n'GNUisanoperatingsystem tr 命令删除空行 由于tr命令仅接受标准输入,因此必须使用标准输入重定向符号<,将标准输入的键盘替换为文件。 tr命令的-s选项表示使用最后一个字符集合替换重复出现的字符。换行符号在单行中会被以为是重复字符串。 tr -s '\\n'组合就是替换重复的换行符,由于命令没有指定第二个字符集合,因此没有字符替换。 最后> new_file.txt就是将tr命令的标准输出重定向到文件new_file.txt。tr -s '\\n' 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。 收藏(0)