tr命令使用

本文详细介绍了 Unix 系统中的 tr 命令,包括其工作原理、命令格式及多个实用示例,展示了如何利用 tr 进行字符转换、大小写统一、特殊字符处理等操作。

 

trtranslate的简写,亦即翻译,但是遗憾的是,它不能翻译句子,只能翻译单个字符。trUnix系统非常实用的工具,其实用tr做到的事情,几乎都可用sed做到,你可以把tr当作是实现sed许多基本功能的sed“简体。我认为tr是简单的字符处理工具,而sed是功能非常强大的字符串处理工具。

 

tr的工作原理是什么?

先记住一点,tr命令不接受指定的文件参数,而只是对标准输入进行翻译。好了,记住这点后,我们继续。

tr的命令格式是tr SET1 SET2,凡是在SET1中的字符,都会被替换为SET2中相应位置上的字符,简单吧!

 

【注意】tr是单个字符处理工具,而不是字符串处理工具!

 

我自己用过比较实用的例子如下:

 

1、将文件file中出现的"abc"替换为"xyz"

# cat file | tr "abc" "xyz" > new_file

【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"

 

2、使用tr命令统一字母大小写

(小写 --> 大写)

# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)

# cat file | tr [A-Z] [a-z] > new_file

 

3、把文件中的数字0-9替换为a-j

# cat file | tr [0-9] [a-j] > new_file

 

4、删除文件file中出现的"Snail"字符

# cat file | tr -d "Snail" > new_file

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

 

5、删除文件file中出现的换行'/n'、制表'/t'字符

# cat file | tr -d "/n/t" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。

 

6、删除连续着的重复字母,只保留第一个

# cat file | tr -s [a-zA-Z] > new_file

 

7、删除空行

# cat file | tr -s "/n" > new_file

 

8、删除Windows文件造成'^M'字符

# cat file | tr -d "/r" > new_file

或者

# cat file | tr -s "/r" "/n" > new_file

【注意】这里-s后面是两个参数"/r""/n",用后者替换前者

 

9、用空格符/040替换制表符/011

# cat file | tr -s "/011" "/040" > new_file

 

10、把路径变量中的冒号":",替换成换行符"/n"

# echo $PATH | tr -s ":" "/n"

 

Linux 中的 `tr` 命令是一个用于字符转换、删除、压缩和补集操作的强大工具。它从标准输入读取数据,并将处理后的结果输出到标准输出,通常结合管道使用[^1]。 ### 字符转换 `tr` 可以将一组字符替换为另一组字符。例如,将小写字母转换为大写: ```bash echo "hello world" | tr 'a-z' 'A-Z' ``` 该命令输出:`HELLO WORLD`[^4] 也可以进行更具体的字符替换,例如将 `h` 和 `l` 替换为 `H` 和 `L`: ```bash echo "hello world" | tr 'hl' 'HL' ``` 输出为:`HeLLo worLd`[^5] ### 删除字符 使用 `-d` 选项可以删除指定的字符。例如,删除字符串中的数字: ```bash echo "hello 123" | tr -d '0-9' ``` 输出为:`hello`[^5] ### 压缩重复字符 使用 `-s` 选项可以将连续重复的字符压缩为一个。例如,将多个连续的小写字母压缩为单个字符: ```bash echo "aaabbbccc" | tr -s 'a-z' ``` 输出为:`abc`[^5] 该功能也可用于去除空行或多余的空白字符: ```bash tr -s "\n" < onefile.txt ``` 这会将文件中连续的多个换行符压缩为一个[^3] ### 补集操作 使用 `-c` 选项可以对字符集进行补集操作,即匹配不在 SET1 中的字符。例如,将非字母字符替换为星号: ```bash echo "hello 123" | tr -c 'a-zA-Z' '*' ``` 输出为:`hello****` ### 截断字符集 使用 `-t` 选项可以将 SET1 截断到与 SET2 相同长度,然后进行替换。例如: ```bash echo "hello world" | tr -t 'abcdefghijklmnopqrstuvwxyz' 'ABCDE' ``` 输出为:`HELLo worLd` ### 综合示例 统计文本中每个字符出现的次数,结合其他命令实现: ```bash echo "aaabbc" | tr -cd '[:alnum:]' | fold -w1 | sort | uniq -c | sort -nr ``` 此命令链首先删除非字母数字字符,然后将每个字符拆分为单独的行,最后统计并排序显示字符频率[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值