tr
tr
是 Linux 和 Unix 系统中的一个文本处理命令,名字来源于 "translate"(翻译/转换)。它主要用来转换或删除文本中的字符。tr
从标准输入读取数据,处理后将结果输出到标准输出。
基本用法
- 字符替换
替换一个字符为另一个字符:
echo "hello world" | tr 'o' '0'
输出:hell0 w0rld
- 字符集替换
替换一组字符为另一组字符:
echo "abcde" | tr 'abc' '123'
输出:123de
- 删除字符
使用-d
删除指定字符:
echo "hello world" | tr -d 'o'
输出:hell wrld
- 压缩重复字符
使用-s
压缩重复的字符:
echo "aaabbbccc" | tr -s 'a'
输出:abbbccc
- 字符集的范围
使用范围来指定字符集:
echo "abcdef" | tr 'a-f' 'A-F'
输出:ABCDEF
- 替换换行符
替换换行符为其他字符(例如逗号):
echo -e "line1\nline2\nline3" | tr '\n' ','
输出:line1,line2,line3,
常见选项
-d
:删除指定字符。-s
:压缩重复出现的字符。-c
:对字符集取反。
注意事项
tr
不能直接操作文件,它只处理标准输入和输出。如果需要处理文件,可以结合<
和>
重定向使用。- 字符替换需要源字符集和目标字符集长度一致,否则
tr
会自动截断或重复。
tr
是一个简单高效的命令,特别适合进行字符级的替换或处理。
把换行符号换成逗号
tr '\n' ',' < input.txt > output.txt
换行符换成逗号,并去掉最后一个逗号
tr '\n' ',' < input.txt | sed 's/,$/\n/'