Linux tr命令的使用方法

01. 命令概述

tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

tr的英文全称是“ transform ”,即转换的意思。tr他只能从标准输入中读取数据,因此,tr要么将输入文件重定向到标准输入,要么从管道读入数据。

注意:tr类似于sed命令,但是比sed简单,所以tr能实现的功能,sed都能实现。

02. 命令格式

用法:tr [选项]... SET1 [SET2]

03. 常用选项

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

-c, -C, --complement        首先补足SET1
  -d, --delete            删除匹配SET1 的内容,并不作替换
  -s, --squeeze-repeats    如果匹配于SET1 的字符在输入序列中存在连续的
                重复,在替换时会被统一缩为一个字符的长度
  -t, --truncate-set1        先将SET1 的长度截为和SET2 相等
      --help        显示此帮助信息并退出
      --version        显示版本信息并退出

SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:

\NNN    八进制值为NNN 的字符(1 至3 个数位)
  \\        反斜杠
  \a        终端鸣响
  \b        退格
  \f        换页
  \n        换行
  \r        回车
  \t        水平制表符
  \v        垂直制表符
  字符1-字符2    从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]    在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]    对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]    所有的字母和数字
  [:alpha:]    所有的字母
  [:blank:]    所有呈水平排列的空白字符
  [:cntrl:]    所有的控制字符
  [:digit:]    所有的数字
  [:graph:]    所有的可打印字符,不包括空格
  [:lower:]    所有的小写字母
  [:print:]    所有的可打印字符,包括空格
  [:punct:]    所有的标点字符
  [:space:]    所有呈水平或垂直排列的空白字符
  [:upper:]    所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]    所有和指定字符相等的字符

仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。

字符范围

指定字符串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

04. 参考示例

4.1 将输入字符由大写转换为小写

[deng@localhost ~]$ echo "HELLO ITCAST" | tr 'A-Z' 'a-z'
hello itcast
[deng@localhost ~]$

‘A-Z' 和 ‘a-z'都是集合,集合是可以自己制定的,例如:‘ABD-}'、‘bB.,'、‘a-de-h'、‘a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

4.2 删除出现的数字

[deng@localhost ~]$ echo "hello 1234 itcast 7890" | tr -d '0-9'
hello itcast
[deng@localhost ~]$

4.3 从输入文本中将不在补集中的所有字符删除

[deng@localhost test]$ echo aabbcc..#dd2 */dk4 | tr -d -c '0-9 \n'
2 4
[deng@localhost test]$ 

补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。

4.4 将连续重复的字符以单独一个字符表示

[deng@localhost test]$ echo "helloooooooooo is  heimamaaaaaaaaaa" | tr -s 'oa'
hello is  heimama
[deng@localhost test]$ 

4.5 使用替换操作执行+操作

[deng@localhost test]$ echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr '\n' '+') 0 ]
45
[deng@localhost test]$

4.6 删除由于Windows文件造成的'^M'字符

[deng@localhost test]$ cat txt | tr -s '\r' '\n' > file
[deng@localhost test]$ 

或者

[deng@localhost test]$ cat txt | tr -d '\r' > file

4.7 将小写字母转换为大写字母

[deng@localhost test]$ echo "hello itcast" | tr '[:lower:]' '[:upper:]'
HELLO ITCAST
[deng@localhost test]$

4.8 将换行符替换成制表符

[deng@localhost test]$ cat txt | tr '\n' '\t'
  1111    1111  2222  2222  5555  [deng@localhost test]$
[deng@localhost test]$ 
(0)

相关推荐

  • Linux命令每天必学(55)之traceroute命令

    关于linux traceroute 命令的相关知识介绍如下所示: 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的.linux系统中,我们称之为traceroute,在MS Windows中为tracert. traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间.一条路径上

  • 详解linux中的strings命令简介

    在Linux下搞软件开发的朋友, 几乎没有不知道strings命令的.我们先用man strings来看看: strings - print the strings of printable characters in files. 意思是, 打印文件中可打印的字符.  我来补充一下吧, 这个文件可以是文本文件(test.c), 可执行文件(test),  动态链接库(test.o), 静态链接库(test.a) 脱离代码地长篇大论而不去实际验证, 不是我的风格. 还是搞点代码下菜吧(代码存在t

  • Linux shell tr 命令详解

    Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作. 2. 语法 tr [OPTION]... SET1 [SET2] 3. 参数 3.1 -s 压缩重复字符 -s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (replace each input sequence of  a  repeated  character  that  is listed in SET1

  • Linux traceroute命令使用详解

    traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的. 常见命令参数 Options: -4 Use IPv4 -6 Use IPv6 -d --debug Enable socket level debugging -F --dont-fragment Do not fragment packets -f f

  • 浅谈Linux中的chattr与lsattr命令

    PS:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了.chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了.通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录.chattr命令不能保护/./dev./tmp./var目录.lsattr命令是显示chattr命令设置的文件属性. 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,ch

  • 一天一个shell命令 linux文本操作系列-tree命令详解

    tree命令是以图形化的树结构打印文件和目录的主角.通常linux发行版本中并没有包括这个命令.你需要用包管理器自行安装. 实例: 1. tree 打印当前目录下所有文件 2. tree –p ${dir} 打印dir目录下所有文件,以及他们的权限 3. tree –h ${dir} 打印dir目录下所有文件,以及适读的大小 4. tree path –P "*.sh" 打印所有.sh结尾的文件 5. tree path –H http://localhost –o out.html

  • Linux下的ctrl常用组合键及操作方法

    在linux的命令模式下使用ctrl组合键能让操作更便捷. ctrl + k : 剪切光标及其后边的内容: ctrl + u : 剪切光标之前的内容: ctrl + y : 在光标处粘贴上两个命令,粘贴方式和被剪切方式相同: ctrl + c : 结束正在运行的程序或命令: ctrl + d : 结束当前命令窗口: ctrl + r : 输入关键字可弹出曾经用过的指令: ctrl + l : 清屏:(和clear效果相同) ctrl + a : 光标切换到行开头: ctrl + e : 光标切换

  • Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解

    Ctrl+c,Ctrl+d,Ctrl+z在Linux中意义 Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. Ctrl+c是强制中断程序的执行. Ctrl+z的是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态. [root@localhost ~]# ping baidu.com PING baidu.com (220.181.57.217) 56(84) bytes of data. 64 bytes from 220.181.57.217: icmp_s

  • Linux tr命令的使用方法

    01. 命令概述 tr命令可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大. tr的英文全称是" transform ",即转换的意思.tr他只能从标准输入中读取数据,因此,tr要么将输入文件重定向到标准输入,要么从管道读入数据. 注意:tr类似于sed命令,但是比sed简单,所以tr能实现的功能,sed都能实现. 02. 命令格式 用法:tr [选项]... SET1 [SET2] 03. 常用选项 从标准输入中替换

  • Linux basename命令的使用方法

    01. 命令概述 basename - 从文件名中剥离目录和后缀 basename命令用于打印目录或者文件的基本名称.basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称. 02. 命令格式 basename 名称 [后缀] basename 选项 03. 常用选项 显示 去掉 目录成分 后的 NAME. 如果 指定了 SUFFIX, 就 同时 去掉 拖尾的 SUFFIX. --help 显示 帮助信息, 然后 结束 --vers

  • Linux locate命令的使用方法

    01. 命令概述 locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库. 02. 命令格式 locate [OPTION]- [PATTERN]- 03. 常用选项 用法

  • Linux md5sum命令的使用方法

    01. 命令概述 md5sum - 计算检验MD5效验码 md5sum命令采用MD5报文摘要算法(128位)计算和检查文件的校验和.一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行. MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的"指纹"(或称"报文摘

  • Linux paste命令的使用方法

    01. 命令概述 paste命令会把每个文件以列对列的方式,一列列地加以合并 ,他就是相当于把两个不同的文件内容粘贴在一起,形成新的文件. 注意:paste默认粘贴方式以列的方式粘贴,但是并不是不能以行的方式粘贴,加上-s选项就可以行方式粘贴. 02. 命令格式 用法:paste [选项]... [文件]... 03. 常用选项 将每个指定文件里的每一行整合到对应一行里写到标准输出,之间用制表符分隔. 如果没有指定文件,或指定文件为"-",程序将从标准输入读取数据. 长选项必须使用的参

  • Linux tr命令的使用

    1.简介 tr用来转换或者删除一段文字.tr是translate(转换的缩写),功能的英文示意是:translate or delete characters.tr所有的功能均可由sed来完成,可以将tr视为sed一个极简的实现. 2.格式 tr [OPTION]... SET1 [SET2] 3.选项 -c,-C,--complement:将字符集<character set1>以外的其他字符删除或者转换为字符集<character set2>中的最后一个字符(如果你指定了多个字

  • Linux seq命令的使用方法

    1.命令简介 seq(Sequence) 命令用于按照指定步长产生从起始数到结束数之间的所有整数.起始数和步长可使用默认值 1,结束数必须指定. 2.命令格式 seq [OPTION]... LAST seq [OPTION]... FIRST LAST seq [OPTION]... FIRST INCREMENT LAST  3.选项说明 注意,长选项的强制性参数对于短选项也是强制的. -f, --format=FORMAT 使用 printf 样式的浮点格式 -s, --separator

  • Ruby中执行Linux shell命令的六种方法详解

    在Ruby中,执行shell命令是一件不奇怪的事情,Ruby提供了大概6种方法供开发者进行实现.这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令. exec exec会将指定的命令替换掉当前进程中的操作,指定命令结束后,进程结束. 复制代码 代码如下: exec 'echo "hello world"' print 'abc' 执行上述的命令,结果如下,我们可以看到没有abc的输出,可以看出来,在执行echo "hello world"命令后

  • Linux nl命令的使用方法

    1.命令简介 nl (Number of Lines) 将指定的文件添加行号标注后写到标准输出.如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据. 2.用法 nl [选项]... [文件]... 3.选项 -b, --body-numbering=样式 使用指定样式编号文件的正文行目 -d, --section-delimiter=CC 使用指定的CC 分割逻辑页数 -f, --footer-numbering=样式 使用指定样式编号文件的页脚行目 -h, --header

  • Linux whatis命令的使用方法

    01. 命令概述 whatis命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出. 查找的内容必须完全匹配关键字的才会输出.whatis数据库文件是用/usr/sbin/makewhatis 命令建立的. 02. 命令格式 whatis [OPTION-] 关键词- 03. 常用选项 Usage: whatis [OPTION...] 关键词... -d, --debug 输出调试信息 -v, --verbose 输出详细的警告信息 -r, --regex 把

随机推荐