用来批量替换文本中的字符
tr的功能是转换或者删除指定的字符
与其他的文本命令不同的是,tr命令不能直接从文件中读取数据,只能从标准输入获取数据,并且将处理结果写到标准输出设备。
tr [option] ... set1 [set2]
-c:用字符集set2替换set1中没有包含的字符
-d:删除字符集set1中的所有字符,不执行替换操作
-s:压缩set1中重复的字符
-t:
参数set1和set2分别表示参与操作的两个字符集,其中set1用于查询,set2用于处理各种转换操作。凡是在set1中出现的字符,都将被替换为字符集set2中相应位置上的字符。
1 去除重复出现的字符
result=`tr -s "[a-z]" < demo.txt`
echo "$result"
上述表达式使用了输入重定向将文本文件的内容输入到tr命令。也可以使用管道完成。
2 删除空行
所谓空行,是指只含有换行符,除此之外不含有任何其他字符
result=`cat demo.txt | tr -s ["\n"]`
echo "$result"
注:换行符也可以用八进制数值\012表示
3 大小写转换
tr [a-z] [A-Z]
注:也可以用'a-z' 'A-Z'表示
4 删除指定字符
使用-d选项
tr -d "[0-9] [:]" < demo.txt //删除数字和冒号
注:使用tr命令时,字符集表示一个个单独的字符,而非字符串。因此,tr -d [Hello]表示的是文本中出现的5个字符,而非Hello这个字符串。
也可以通过补集的方法删除文本中的字符:
tr -cs "[a-z] [A-Z]" "[\n*]" < demo.txt