`

【Linux】tr 命令的使用

 
阅读更多
一,关于tr
通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有tr 所能够做的。
tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询, 字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file >result
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。 result 是转换后输出文件的名字

也可以使用管道 作为输入,例如:cat a.txt | tr "[a-z]" "[A-Z]" >b.txt


【注意】 发现 只写 a-z 替换 "[a-z]" 也管用
二,字符范围

指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。

[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。

tr中特定控制字符的不同表达方式
速记符含义八进制方式
\a Ctrl-G 铃声\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行换页\014
\n Ctrl-J 新行\012
\r Ctrl-M 回车\015
\t Ctrl-I tab键\011
\v Ctrl-X \030

三,应用例子

(1)去除oops.txt里面的重复的小写字符
tr -s "[a-z]"<oops.txt >result.txt
(2)删除空行
tr -s "[\012]" < plan.txt 或tr -s ["\n"] < plan.txt
(3)有时需要删除文件中的^M,并代之以换行
tr -s "[\015]" "[\n]" < file 或tr -s "[\r]" "[\n]" < file
(4)大写到小写
cat a.txt |tr "[a-z]" "[A-Z]" >b.txt
(5)删除指定字符
一个星期的日程表。任务是从其中删除所有数字,只保留日期。日期有大写,也有小写格式。因此需指定两个字符范围[a-z]和[A-Z],命令tr -cs "[a-z][A-Z]" "[\012*]" 将文件每行所有不包含在[a-z]或[A-Z](所有希腊字母)的字符串放在字符串1中并转换为一新行。-s选项表明压缩所有新行, -c表明保留所有字母不动。原文件如下,后跟tr命令:
tr -cs "[a-z][A-Z]" "[\012*]" <diary.txt
(6)转换控制字符
tr的第一个功能就是转换控制字符,特别是从dos向UNIX下载文件时,忘记设置ftp关于回车换行转换的选项时更是如此。
cat -v filename 显示控制字符。
cat -v stat.txt
显示为:
box aa^^^^^12^M
apple bbas^^^^23^M

猜想‘^ ^ ^ ^ ^ ^’是tab键。每一行以Ctrl-M结尾,文件结尾Ctrl-Z,以下是改动方法。
使用-s选项,查看ASCII表。^的八进制代码是136,^M是015,tab键是011,^Z是032 ,下面将按步骤完成最终功能。

用tab键替换^ ^ ^ ^ ^ ^,命令为"\136" "[\011*]"。将结果重定向到临时工作文件stat.tmp
tr -s "[\136]" "[\011*]" <stat.txt >stat.tmp
用新行替换每行末尾的^M,并用\n去除^Z,输入要来自于临时工作文件stat.tmp。
tr -s "[\015][\032]" "\n" <stat.tmp
要删除所有的tab键,代之以空格,使用命令
tr -s "[\011]" "[\040*]" <input.file
(7)替换passwd文件中所有冒号,代之以tab键,可以增加可读性
tr -s "[:]" "[\011]" < /etc/passwd 或tr -s "[:]" "[\t]" < /etc/passwd

(8)使路径具有可读性
如果用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,我们看到的将会是一大堆用冒号连接在一起的路径,tr命令可以把这些冒号转换为回车,这样,这些路径就具有很好的可读性了
echo $PATH | tr ":" "\n"

(9)可以在vi内使用所有这些命令!只要记住:在tr命令前要加上您希望处理的行范围和感叹号 (!),如 1,$!tr -d '\t'(美元符号表示最后一行)。

(10)另外,当有人给您发送了一个在 Mac OS 或 DOS/Windows 机器上创建的文本文件时,您会发现tr非常有用。
如果没有将文件保存为使用 UNIX 换行符来表示行结束这种格式,则需要将这样的文件转换成本机 UNIX 格式,否则一些命令实用程序不会正确地处理这些文件。Mac OS 的行尾以回车字符(\r)结束,许多文本处理工具将这样的文件作为一行来处理。为了纠正这个问题,可以用下列技巧:
Mac -> UNIX:tr "\r" "\n"<macfile > unixfile
UNIX -> Mac:tr "\n" "\r"<unixfile > macfile
Microsoft DOS/Windows 约定,文本的每行以回车字符(\r)并后跟换行符(\n)结束。为了纠正这个问题,可以使用下列命令:
DOS -> UNIX:tr -d "\r"<dosfile > unixfile
UNIX -> DOS:在这种情况下,需要用awk,因为tr不能插入两个字符来替换一个字符。要使用的 awk 命令为 awk '{ print $0"\r" }'<unixfile > dosfile

分享到:
评论

相关推荐

    linux shell命令tr的用法

    linux shell命令tr的用法

    Linux下tr命令“字符”处理的实用例子

    Linux下tr命令是一种用于转换或删除字符的命令行工具。它非常适合处理文本数据,尤其在数据清洗和预处理阶段。...以上介绍的tr命令的实用例子可以帮助用户快速掌握该命令的使用方法,提高在Linux环境下的文本处理效率。

    tr命令的用法

    ### tr命令的用法 #### 一、简介 在Linux环境下,`tr`是一个非常强大的命令行工具,用于实现字符的替换、删除等操作。它简单而高效,常常被用来预处理文本数据,例如清洗日志文件、转换大小写、删除特定字符等。...

    Linux tr命令的使用

    Linux tr命令是一个强大的文本处理工具,它主要用于在标准输入中转换或删除字符。这个命令的名字“tr”来源于“translate”,其主要功能就是进行...了解和掌握tr命令的使用,将极大地提升你在Linux环境下的工作效率。

    Linux tr命令的使用方法

    tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。 tr的英文全称是“ transform ”,即转换的意思。tr他只能从标准输入中读取数据,...

    Linux tr命令用法详解

    Linux tr命令 Linux tr 命令用于转换或删除文件中的字符。 tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。 语法 tr [-cdst][--help][--version][第一字符集][第二字符集] tr ...

    linux入门命令(linux 基本命令)

    1. **字符转换**: 使用 `tr` 命令转换文本中的字符,如大小写转换或替换特定字符。 2. **查找文件中符合条件的字符串**: 使用 `grep` 命令在文件中搜索特定的模式或字符串。 ### 四、基本网络配置命令 1. **配置或...

    linux-Linux命令大全内容包含Linux命令手册详解学习搜集

    本资源"Linux命令大全"包含了516个Linux命令的详细资料,对于学习和理解Linux操作系统至关重要。下面,我们将深入探讨这个资源中涉及的一些关键知识点。 1. **命令手册**: - 在Linux世界中,命令手册(man pages...

    Linux常用命令全集

    本资源“Linux常用命令全集”提供了一个全面且实用的参考指南,旨在帮助用户快速查找并理解常用的Linux命令。 1. **Linux命令基础** - **ls**:列出目录内容,常用选项如 `-l` 以详细格式显示,`-a` 显示所有文件...

    linux 常用命令源代码

    9. `tr.c`: `tr`命令用于字符替换和删除。源代码涉及字符串处理、映射表和编码转换。 10. `od.c`: `od`命令用于以二进制、八进制、十进制或十六进制显示文件内容。这涉及到位操作、数据类型转换和格式化输出。 ...

    Linux命令大全(CHM格式离线版)

    Linux命令大全(CHM格式离线版) Linux命令大全(修改版) 进行重新编译的说明 文件传输 bye ftp ftpcount ftpshut ftpwho ncftp tftp uucico uucp uupick uuto 备份压缩 ar bunzip2 bzip2 bzip2recover compress cpio ...

    linux 核心命令源码

    linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...

    Linux命令大全完整版.pdf

    - tr命令用于替换、删除或缩减字符。 4. Linux压缩备份命令 这部分涉及到Linux系统中用于文件压缩和备份的命令。 - ar命令创建、修改以及提取归档文件。 - bunzip2、bzip2和gzip命令用于文件压缩与解压缩。 - tar...

    Linux命令详解手册.pdf

    这份手册详细列举并解释了每个命令的用途和使用方法,是Linux用户管理和维护系统时不可或缺的参考资料。 首先,Linux系统管理命令部分介绍了诸如adduser、chfn、chsh等用户管理命令,用于添加、修改用户信息和改变...

    Linux操作命令七.doc

    "Linux操作命令七" ...cut 命令、paste 命令和 tr 命令是 Linux 操作系统中三个非常重要的命令,它们可以帮助用户高效地处理文本数据。在实际工作中,我们可以根据需要选择合适的命令来处理数据,从而提高工作效率。

    linux文本处理命令

    本文将详细介绍 Linux 文本处理命令,包括 sort、uniq、tsort 等命令的使用和示例。 sort 命令 sort 命令用于对文本文件或文本流进行排序。它可以根据指定的关键字或指定的字符位置对文件行进行排序。使用 -m 选项...

    Linux完全命令参考手册

    根据提供的标题“Linux完全命令参考手册”及其描述“Linux完全指令速查手册,提供命令分类,命令详细解释,命令使用例子。难得的好资料。”我们可以理解这份资料主要关注于Linux操作系统中的命令行操作,并且提供了...

Global site tag (gtag.js) - Google Analytics