欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Linux的命令行中一些文本操作技巧的实例分享
在USB磁盘上制作Linux的GRUB引导的方法
通过Linux系统将Windows系统迁移到到新的磁盘上
在Linux系统中批量删除多个文件的方法总结
设置自动清理Linux系统中n天前的文件的方法
Linux下自动清理大量文件的方案探究
Linux系统中的screen命令基本使用教程
解析Linux系统的平均负载概念
Linux系统下wget命令的使用教程
iPad Air/iPad mini2怎么下载微信?
Linux系统中tr命令删除和替换文本字符的基本用法
【 来源:网络 】【 点击:2 】 【 发布时间:2017_03_03 08:59:59 】

   通过使用 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

  这里:

  -c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。

  -d 删除字符串1中所有输入字符。

  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

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

  字符范围

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

  b Ctrl-H 退格符10

  f Ctrl-L 走行换页14

  n Ctrl-J 新行12

  r Ctrl-M 回车15

  t Ctrl-I tab键11

  v Ctrl-X 30

  表达字符串的特殊序列

  String1 和 String2 变量中所包含的字符串可以使用以下的约定来表示:

20151127110839429.png (1158×739)

  如果某个字符在 String1 中被指定过多次,则该字符就被转换成 String2 中为与 String1 中最后出现的字符相对应的字符。

  如果由 String1 和 String2 指定的字符串长度不相同,则 tr 命令就会忽略较长一个字符串中的多余字符。

  标志

20151127110905187.png (1081×413)

  退出状态

  该命令返回以下出口值:

20151127110922842.png (1092×72)

  实例:

  1、将文件file中出现的"abc"替换为"xyz"

  复制代码

  代码如下:

  # cat file | tr "abc" "xyz" > new_file

  【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。

  2、使用tr命令“统一”字母大小写

  (小写 --> 大写)

  代码如下:

  # cat file | tr [a-z] [A-Z] > new_file

  (大写 --> 小写)

  代码如下:

  # cat file | tr [A-Z] [a-z] > new_file

  3、把文件中的数字0-9替换为a-j

  代码如下:

  # cat file | tr [0-9] [a-j] > new_file

  4、删除文件file中出现的"Snail"字符

  代码如下:

  # cat file | tr -d "Snail" > new_file

  【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

  5、删除文件file中出现的换行'n'、制表't'字符

  代码如下:

  # cat file | tr -d "nt" > new_file

  不可见字符都得用转义字符来表示的,这个都是统一的。

  6、删除“连续着的”重复字母,只保留第一个

  代码如下:

  # cat file | tr -s [a-zA-Z] > new_file

  7、删除空行

  代码如下:

  # cat file | tr -s "n" > new_file

  8、删除Windows文件“造成”的'^M'字符

  代码如下:

  # cat file | tr -d "r" > new_file

  或者

  代码如下:

  # cat file | tr -s "r" "n" > new_file

  【注意】这里-s后面是两个参数"r"和"n",用后者替换前者

  9、用空格符40替换制表符11

  代码如下:

  # cat file | tr -s "11" "40" > new_file

  10、把路径变量中的冒号":",替换成换行符"n"

  代码如下:

  # echo $PATH | tr -s ":" "n"

  11、若要将大括号转换为小括号,请输入:

  代码如下:

  tr '{}' '()' < textfile > newfile

  这便将每个 {(左大括号)转换成 ((左小括号),并将每个 }(右大括号)转换成 )(右小括号)。所有其它的字符都保持不变。

  12、若要将大括号转换成方括号,请输入:

  代码如下:

  tr '{}' '[]' < textfile > newfile

  这便将每个 {(左大括号)转换成 [(左方括号),并将每个 }(右大括号)转换成 ](右方括号)。左方括号必须与一个 ""(反斜扛)转义字符一起输入。

  13、若要将小写字符转换成大写,请输入:

  代码如下:

  tr 'a-z' 'A-Z' < textfile > newfile

  14、若要创建一个文件中的单词列表,请输入:

  代码如下:

  tr -cs '[:lower:][:upper:]' '[n*]' < textfile > newfile

  这便将每一序列的字符(除大、小写字母外)都转换成单个换行符。*(星号)可以使 tr 命令重复换行符足够多次以使第二个字符串与第一个字符串一样长。

  15、若要从某个文件中删除所有空字符,请输入:

  代码如下:

  tr -d '' < textfile > newfile

  16、若要用单独的换行替换每一序列的一个或多个换行,请输入:

  代码如下:

  tr -s 'n' < textfile > newfile

  或

  代码如下:

  tr -s '12' < textfile > newfile

  17、若要以“?”(问号)替换每个非打印字符(有效控制字符除外),请输入:

  代码如下:

  tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile

  这便对不同语言环境中创建的文件进行扫描,以查找当前语言环境下不能打印的字符。

  18、要以单个“#”字符替换 字符类中的每个字符序列,请输入:

  代码如下:

  tr -s '[:space:]' '[#*]'

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站