Appearance
tr 命令:转换或删除字符
1. 简介
tr
命令是 "translate" 的缩写,用于转换或删除字符。它可以用来进行字符替换、字符删除以及基本的字符转换,如大小写转换。tr
命令从标准输入读取数据,将结果写入标准输出。
2. 基本语法
bash
tr [选项] SET1 [SET2]
3. 常用选项
-d
:删除 SET1 中的字符,不作翻译-s
:压缩重复的字符-c
:使用 SET1 的补集-t
:截断 SET1 使之与 SET2 长度相等
4. 基础使用示例
将小写转换为大写:
bashecho "hello world" | tr 'a-z' 'A-Z'
删除特定字符:
bashecho "hello world" | tr -d 'aeiou'
将空格替换为换行符:
bashecho "hello world" | tr ' ' '\n'
删除重复字符:
bashecho "hello world" | tr -s ' '
5. 进阶使用技巧
使用字符类:
bashecho "hello 123 world" | tr '[:lower:]' '[:upper:]'
删除非数字字符:
bashecho "hello 123 world" | tr -cd '[:digit:]'
ROT13 加密:
bashecho "hello world" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
将制表符转换为空格:
bashcat file.txt | tr '\t' ' '
6. 实用示例
创建字符集的补集:
bashecho "hello 123 world" | tr -c '[:alnum:]' ' '
删除文件中的所有空白字符:
bashtr -d '[:space:]' < file.txt
将多个空格压缩为一个:
bashecho "hello world" | tr -s ' '
将 Windows 文本文件转换为 Unix 格式:
bashtr -d '\r' < win_file.txt > unix_file.txt
7. 注意事项
tr
命令不接受文件名作为参数,它只能通过标准输入读取数据。- 当 SET2 比 SET1 短时,SET2 的最后一个字符会被重复使用。
tr
命令按字符处理输入,不支持多字节字符或正则表达式。
8. 相关命令
sed
:更强大的流编辑器awk
:用于更复杂的文本处理iconv
:用于字符集转换dos2unix
和unix2dos
:用于转换文件格式
9. 技巧与建议
使用
tr
快速生成测试数据:bashtr -dc 'A-Za-z0-9' < /dev/urandom | head -c 10
结合其他命令使用:
bashcat file.txt | tr '[:upper:]' '[:lower:]' | sort | uniq -c
使用
tr
进行简单的文本加密:bashecho "secret message" | tr 'A-Za-z' 'N-ZA-Mn-za-m'
清理输入数据:
bashcat data.csv | tr -d '[:cntrl:]' > cleaned_data.csv
tr
命令是一个简单但强大的文本处理工具。它在处理简单的字符级转换时非常高效,特别适用于清理数据、格式转换和基本的文本操作。虽然它不如 sed
或 awk
功能丰富,但在许多日常任务中,tr
的简洁性使它成为首选工具。熟练使用 tr
可以帮助你快速完成各种文本转换任务,提高文本处理的效率。