手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux 命令学习示例: tr

[日期:2013-01-03] 来源:Linux社区  作者:shuqin1984 [字体: ]

在《如何学习 Linux 命令和工具》  http://www.linuxidc.com/Linux/2013-01/77278.htm 中,简要地谈了下学习 linux 命令的一些基本方法和注意事项。 本文将以一些命令为例, 来谈谈如何具体地学习某个 linux 命令。注意,本文的重点不在命令本身,而在于命令的学习方法上。给人一萝筐鱼不如教人一套行之有效的捕鱼之法。

示例一:  tr

(1)  先查看帮助信息, tr --help  或 man tr  :

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

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

可知该命令主要是用来作字符过滤处理的。由于选项放在方括号中,是可选的。先不使用任何选项:

$:~/csat/packages$ tr 'eaiou' 'fbjpv'
i have a dream
j hbvf b drfbm

从结果中可以看到, tr 是用作字符转换的(以字符为转换单位,而不是字符序列), 将前面指定的字符集中定义的字符的所有出现替换成后面指定的字符集中位置相对应的字符的出现。看上去可以用作小小的加密方式哦。 试一试位置长度不匹配的情形:

a.  SET1 长度小于 SET2 : 看上去好像没影响

$:~/csat/packages$ tr 'eaiou' 'fbjpvt'
i have a dream , and you ?
j hbvf b drfbm , bnd ypv ?

b. SET1 长度大于 SET2: SET1 按位置对应多出的字符的出现都被替换成 SET2 的最后一个字符的出现

$:~/csat/packages$ tr 'eaiou' 'fbjp'
i love you, u know ?
j lpvf ypp, p knpw ?

o,u 都替换成 p 了。 -t 选项看上有点关联,试试:

$:~/csat/packages$ tr -t 'eaiou' 'fbj'
i love you
j lovf you

现在 o, u 都不再被替换了。 可以理解 -t 的作用了。 它实际上是执行命令 tr 'eai' 'fbj' , 将 'eaiou' 截成与 'fbj' 等长,保留前面的部分。

由于选项比较少,可以一个个地尝试下:

$:~/csat/packages$ tr -d 'ea'
i have a good dream.
i hv  good drm.
^C

该选项是从给定输入中删除给定字符集中定义的所有字符('e','a')的所有单个的出现, 而不是删除字符组合 ea.  这是删除功能;

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款