给大家介绍一个 Linux 中既能转换又能删除字符的命令:tr。tr 命令是 Linux 系统中用于转换和删除字符的命令,全称是 "translate"。tr 主要通过标准输入读取数据,并对这些数据进行字符替换、删除或压缩,然后将结果输出到标准输出。tr [OPTION]... SET1 [SET2]
- SET2: 指定与 SET1 对应的字符集,用于转换操作。
- -s: 压缩重复的字符,将多个连续的相同字符压缩为一个字符。
- -c: 取 complement,即选择不在 SET1 中的字符。
- -t: 只处理 SET1 中的最小数量的字符,而不是全部。
tr 可以从标准输入读取数据,通常通过管道(|)与其他命令结合使用。echo "hello world" | tr'a-z''A-Z'
echo "abc123def456" | tr -d '0-9'
echo "This is a test." | tr -s ' '
输出不在 SET1 中的字符,例如输出所有非字母字符:echo "Hello, World! 123" | tr -c 'a-zA-Z''\n'
可以组合使用不同的选项。例如,先替换字符,再删除字符:echo "hello 123" | tr'e''E' | tr -d '0-9'
tr 还支持使用字符范围来指定字符集。例如,要将字母的大小写互换:echo "Hello World" | tr'A-Za-z''a-zA-Z'
虽然 tr 通常用于处理标准输入,但也可以用于文件。通过输入重定向或管道配合其他命令使用。tr 'a-z''A-Z' < input.txt > output.txt
这将把 input.txt 文件中的所有小写字母转换为大写字母,并将结果输出到 output.txt。在某些版本的 tr 中,你可以使用字符类,比如 [:digit:] 表示所有数字:echo "abc123" | tr'[:lower:]''[:upper:]'
cat file.txt | tr -s "\n" > new_file
tr 是一个强大的文本处理工具,在需要对字符进行转换、删除或压缩时非常有用。它通常与其他命令结合使用,通过管道处理流数据,完成复杂的文本转换任务。