`
天梯梦
  • 浏览: 13730197 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

linux:tr的用法

 
阅读更多

可以把tr看作为一个简化的sed工具,tr表示为:translate。tr命令主要用于实现以下两个功能

替换操作的字符串转换。


删除操作的字符串转换,可以很容易的删除一些控制字符或者是空行。
tr命令能够实现的功能,都能够用sed命令来实现。但就具体的替换功能来说,tr用起来更容易,也比较简单。

 

一,命令格式
[html] view plaincopy
tr [option] ["string1"] ["string2"] < file 


常用的选项有:
默认选项。就是没有任何选项的时候,tr默认为替换操作,就是将string1在文件中出现的字符替换为string2中的字符,这里要注意的是替换关系。
-c选项,用string1中字符的补集替换string1,这里的字符集为ASCII。
-d选项,删除文件中所有在string1中出现的字符。
-s选项,删除文件中重复并且在string1中出现的字符,只保留一个。
-c选项在使用时,只是将string1替换为现在的补集,如在使用

 

[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr -c "0-9" "*" 
*****************2012*  

 
可以看出,我们使用0-9,添加-c选项后,会把0-9替换为其补集,这时补集自然不包含0-9,而包含很多其它的字符,接下来就把所有的其它字符都替换成*号,但不包含数字。
如果只需要替换数字的话:

[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr "0-9" "*" 
hello world,root,****  

 
二,字符串的取值范围
指定string或string2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。

 

三,控制字符的不同表达方式

速记符 含义 八进制方式
\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 注意这些控制字符,如果想在linux下输入,如我们可能需要输入^M这种字符,只需ctrl+V+M同时按下即可。

 

四,字符替换
这是tr的默认操作,先看下面的命令和输出

[html] view plaincopy
[root@localhost client]# echo "hello world" | tr "a-z" "A-Z" 
HELLO WORLD 
[root@localhost client]# echo "hello world" | tr "a-l" "A-Z" 
HELLo worLD 
[root@localhost client]# echo "hello world" | tr "a-z" "A-H" 
HEHHH HHHHD  

 
第一行输出就是将小写换成大写。
第二行输出将小写中的a-l分别换成A-L,而将小写中的l以后的字符都不替换。
第三行输出将小写中的a-h换成A-H,而h以后的字符都换成H,因为后者的替换空间没有前面的字符空间大,所以就重复后面的H,相当于后面的字符是A-HHH......HHHHH。

如果我们想要进行大小写转换,可以按下面的输入:

[html] view plaincopy
tr "a-z" "A-Z" < inputfile  

 
五,去除重复字符
这个时候,所用的选项是-s选项,如:

[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -s "ao" 
hello world,rot 
[root@localhost client]# echo "hello world,root" | tr -s "lo" 
helo world,rot 
[root@localhost client]# echo "hello world,root" | tr -s "a-z" 
helo world,rot 
[root@localhost client]# echo "hello world,root" | tr -s "0-9" 
hello world,root  

 
第一行表示将输入字符串中的包含在"ao"字符集中的重复字符去掉,只留一个。因为"hello world,root",只有o满足条件,所以将root变成rot,把中间的两个o变成一个。
第二行将hello和root两个字符都压缩了。
第三行表示将a-z中的除复字符都去掉。
第三行表示将字符串中的重复的且重复字符在0-9字符集中的字符去掉,这里没有。


如果我们想要去掉空行,可以这样操作:
[html] view plaincopy
tr -s "\n" < inputfile 或者 tr -s "\012" <inputfile // 这两个是一样的。 
就是将重复的换行符去掉,只留一个。

 

六,删除字符
-d选项和-s选项类似,只不过-d选项会删除所有出现的字符。

[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -d "a-h" 
llo worl,root 
[root@localhost client]# echo "hello world,root,2012" | tr -d "a-z" 
 ,,2012 
[root@localhost client]# echo "hello world,root,2012" | tr -d "0-9" 
hello world,root, 

 

来源:http://www.cnblogs.com/fukajg/archive/2012/09/28/2706575.html

 

用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

  -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 缩减。

 

例子:

[root@localhost zhangy]# echo "TANK" |tr A-Z a-z   #大写字母转小写
tank

[root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z    #小写字线转大写
TANK ZHANG

[root@localhost zhangy]# cat aaa.txt       #原文件
aaa

bbb

[root@localhost zhangy]# cat aaa.txt|tr 'a' 'c'     #字母c替换字母a
ccc

bbb

[root@localhost zhangy]# cat aaa.txt|tr -d 'a'    #删除所有字母a


bbb

[root@localhost zhangy]# cat aaa.txt|tr -d '\n\t'   删除文件file中出现的换行'\n'、制表'\t'字符
aaabbb

[root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z]   #删除重复的字母
a

b

[root@localhost zhangy]# cat aaa.txt|tr -s '\n'    #删除空行
aaa
bbb

[root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040'   #用空格符\040替换制表符\011
aaa

bbb

 

来源: http://l.51yip.com/search/tr

 

分享到:
评论

相关推荐

    linux shell命令tr的用法

    linux shell命令tr的用法

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

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

    Linux tr命令的使用方法

    01. 命令概述 tr命令可以对来自标准输入的字符进行替换、压缩和删除。...用法:tr [选项]... SET1 [SET2] 03. 常用选项 从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。  -c, -C, –complement 

    Linux tr命令用法详解

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

    tr命令的用法

    ### tr命令的用法 #### 一、简介 在Linux环境下,`tr`是一个非常强大的命令行工具,用于实现字符的替换、删除等操作。...熟练掌握`tr`的使用方法,对于日常的文本数据处理工作来说是非常有用的。

    Linux tr命令的使用

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

    shell中tr的用法

    `tr`命令是Unix/Linux shell中用于字符转换和删除的工具,主要应用于文本处理和数据清洗。它通过替换或删除指定的字符来实现文本的...通过熟练掌握`tr`命令的用法,可以更有效地处理文本数据,满足各种文本处理需求。

    TR143文档 PDF

    ### TR143文档知识点详解 #### 一、概述 TR143文档是由宽带论坛(The Broadband Forum)发布的技术报告,主要关注的是网络吞吐量性能测试和统计监控的相关标准与指导原则。这份文档对于理解如何进行有效的网络性能...

    Qume,一个只有50M的Linux虚拟机

    使用方法 1 运行linux.bat这个文件,会弹出一个窗口,然后你按照窗口出现的英文提示操作 便可。 2 当你用鼠标操作这个虚拟机时,你会发现鼠标移不出虚拟机的窗口,没关系的只要 你同时按下Ctrl+Alt就会把你的鼠标从...

    Linux shell tr 命令详解

    ### Linux Shell `tr` 命令详解 #### 一、引言 在日常的Linux系统管理和文本处理任务中,`tr` 命令是一个非常实用且强大的工具。它能够帮助用户执行字符的替换、删除及压缩重复字符等操作。本文将详细解析`tr`命令...

    Linux常用命令用法100个.docx

    以下是 100 个常用的 Linux 命令用法,涵盖文件管理、权限管理、系统信息、磁盘管理、网络管理等方面。 文件管理 1. echo aa &gt; test.txt:将内容写入到文件中,并覆盖原文件。 2. echo bb &gt;&gt; test.txt:将内容追加...

    linux QT显示中文

    在使用Linux环境下的QT进行开发时,经常会遇到中文字符的处理问题。由于编码格式的不同,如果不加以注意,可能会导致程序读取到乱码,甚至崩溃。本文将详细介绍如何利用QT的内置功能正确地处理中文字符,包括设置...

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

    - 在Linux世界中,命令手册(man pages)是获取命令用法和参数信息的主要方式。例如,输入`man ls`可以查看`ls`命令的帮助文档,了解如何列出目录内容。 2. **基础命令**: - `cd`:改变当前工作目录,是日常操作...

    linux-101-hacks

    - **History扩展**:历史命令的高级使用方法,包括扩展功能。 ### 第八章 - 系统任务管理 - **Fdisk命令**:用于磁盘分区。 - **Mke2fsk命令**:用于创建文件系统。 - **挂载一个分区**:如何将分区挂载到目录树中...

    shell编程指南,shell脚本,本书共分五部分全。grep家族,sed,AWK,正则表达式,tr用法

    第12章 tr用法 119 第三部分 登录环境 第13章 登录环境 125 第14章 环境和shell变量 132 第15章 引号 146 第四部分 基础shell编程 第16章 shell脚本介绍 151 第17章 条件测试 154 第18章 控制流结构 160 第19章 ...

    Linux 常用命令大全包括许多用于系统管理、文件操作、网络管理等方面的命令 以下是一些常用的 Linux 命令: 1. 2.

    ### Linux常用命令详解 ...此外,对于特定命令的更详细用法和选项,可以使用`man`命令查看手册页,例如`man ls`将显示`ls`命令的手册页面。不断学习和实践这些命令,将使你在Linux环境下更加得心应手。

    UPNP linux 端口映射工具

    UPNP(Universal Plug and Play,通用即插即用)是一种网络协议,主要目的是简化设备的网络连接和控制,尤其在家庭网络环境中。...了解和掌握这些工具的使用方法,能够帮助你更好地管理和优化网络服务的对外访问。

    Linux中几个正则表达式的用法.doc

    以下将详细介绍文件标题和描述中涉及的几个Linux正则表达式用法: 1. **查找IPv4地址**: 使用`ifconfig`命令获取网络接口配置,通过管道`|`传递给其他命令处理。`head -n 2 | tail -1`用于获取第一行非标题行,...

    Linux&SHELL;基本知识笔试试卷

    - **知识点**:在 Linux 中执行 SHELL 脚本,可以使用以下几种方法: - 使用 `source $shell_script` 或 `.$shell_script` 来在当前 shell 中执行脚本。 - 使用 `sh $shell_script` 或 `./$shell_script` 来在一个...

Global site tag (gtag.js) - Google Analytics