tr 是Unix命令行专家工具箱中一件简约却不失精美的工具。它经常用来编写优美的单行命 令,作用不容小视。 tr 可以对来自标准输入的内容进行字符替换、字符删除以及重复字符压缩。 它可以将一组字符变成另一组字符,因而通常也被称为转换(translate)命令。

1. 用 tr 删除字符:

$ cat file.txt | tr -d '\n'

$ echo "hello 123 world 456789" | tr -d '0-9'
hello  world

2. 字符集补集:

补集意味着这个集合中包含 set1 中没有的所有字符。

最典型的用法是从输入文本中将不在补集中的所有字符全部删除。例如:

$ echo hello 1 char 2 next 4 | tr -d -c '0-9 \n'
1 2 4

在这里,补集中包含了除数字、空格字符和换行符之外的所有字符。因为指定了 -d ,所以这
些字符全部都被删除。

3. 用 tr 压缩字符

tr 的 -s 选项可以压缩输入中重复的字符,方法如下:

$ echo "GNU   is     not     UNIX." | tr -s ' '
GNU is not UNIX

4.用一种巧妙的方式用 tr 将文件中的数字列表进行相加:

$ $ cat sum.txt
1
2
3
4
5

$ cat sum.txt | echo $[ $(tr '\n' '+' ) 0 ]
15

这一招是如何起效的?

在上面的命令中, tr 用来将 '\n' 替换成 '+' ,因此我们得到了字符串 "1+2+3+…5+" ,

但是
在字符串的尾部多了一个操作符 + 。为了抵消这个多出来的操作符,我们再追加一个 0 。

$[ operation ] 执行算术运算,因此得到下面的字符串:

echo $[ 1+2+3+4+5+0 ]

results matching ""

    No results matching ""