红联Linux门户
Linux帮助

学习tr指令时的一点发现

发布时间:2015-10-20 15:10:07来源:linux网站作者:LinuxIPLinux

今天在学习 tr 指令时,有个参数 -c 可以用字符串1中字符集的补集替换此字符集,要求字符集为A S C I I。然后在终端上试了一条命令:

tr -cs "[a-z][A-Z]" "[\012*]" <diary.txt 

这是将文件 diary.txt 内的非字符数据转换成换行符,然后用 -s 选项删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。


后来仔细看这条命令时,发现在 \012 后面加了个 * ,当我去掉这个 * 时,再运行,发现得出的结果全在同一行,并且用 ] (左中括号)隔开,然后我又试着 用 \n 代替 \012,

发现也是只有在 \n 后加 * 才得出正确的结果。后来将中括号去掉。这是不要 * 时可以输出正确结果,发而加了 * 后会将结果都输出在一行,中间用 * 隔开。


猜想:是否在加中括号后,里面的特殊字符后都要加 *,无论是用字母表示的,还是用八进制数表示的。


tr命令详解 Linux字符转换:http://www.linuxdiyf.com/linux/8911.html