shell编程——基本文本处理(八)之tr命令替换文件内容

用来批量替换文本中的字符

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

你可能感兴趣的:(shell编程——基本文本处理(八)之tr命令替换文件内容)