tr - 转换、删除和压缩字符
tr 从标准输入读取数据,对字符进行转换、删除或压缩,再把结果写到标准输出。
常用参数
-c、--complement:使用指定字符集合的补集。-d、--delete:删除第一个字符集合中的字符。-s、--squeeze-repeats:把连续重复的指定字符压缩为一个。-t、--truncate-set1:先把第一个字符集合截断到与第二个集合相同的长度。
转换字符
# 小写字母转换为大写
printf '%s\n' 'Abc' | tr '[:lower:]' '[:upper:]'
# 大写字母转换为小写
printf '%s\n' 'Abc' | tr '[:upper:]' '[:lower:]'
# 将冒号转换为空格
printf '%s\n' 'name:value' | tr ':' ' '使用 [:lower:]、[:upper:] 等字符类通常比直接写 a-z 更清晰,也更能表达本地化环境下的意图。
删除字符
# 删除所有数字
printf '%s\n' 'abc123' | tr -d '[:digit:]'
# 只保留字母和数字
printf '%s\n' 'a-b_c 123' | tr -cd '[:alnum:]'压缩连续字符
# 将连续空格压缩成一个空格
printf '%s\n' 'alpha beta' | tr -s ' '
# 将连续换行压缩成一个换行
tr -s '\n' < input.txttr 处理的是字符集合,不是普通字符串替换工具。需要替换完整字符串或使用正则表达式时,可考虑 sed 或 awk。