Linux系统中tr命令删除和替换文本字符的基本用法

魅影龙骑士

魅影龙骑士

2016-03-31 15:20

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的Linux系统中tr命令删除和替换文本字符的基本用法教程,一起来看看吧!超容易上手~

Linux系统中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

  这里:

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fuwuqi/)

  -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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/fuwuqi/)

  或

  代码如下:

  tr -s '12' textfile newfile

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

  代码如下:

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

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

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

  代码如下:

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

展开更多 50%)
分享

猜你喜欢

Linux系统中tr命令删除和替换文本字符的基本用法

服务器
Linux系统中tr命令删除和替换文本字符的基本用法

Keynote怎么查找和替换文本

电脑网络
Keynote怎么查找和替换文本

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

自动检查并替换文本框内的字符

Web开发
自动检查并替换文本框内的字符

Linux系统中如何使用uniq命令删除文本重复行

电脑入门
Linux系统中如何使用uniq命令删除文本重复行

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux系统中hexdump命令的用法汇总

电脑入门
Linux系统中hexdump命令的用法汇总

SUSE Linux系统中zypper命令用法汇总

电脑入门
SUSE Linux系统中zypper命令用法汇总

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

苹果iPhone6sPlus已删备忘录怎么恢复?

苹果iPhone6sPlus已删备忘录怎么恢复?

iPhone6s 64GB实际空间为什么才55.6GB?

iPhone6s 64GB实际空间为什么才55.6GB?
下拉加载更多内容 ↓