tr命令用于从标准输出中转换、压缩和/或删除字符。
语法:
tr [OPTION]... SET1 [SET2]
-c, -C, –complement 取字符集的补集,需要配合其他选项,不能单独使用。
-d, –delete 删除SET1中的字符而不是转换
-s, –squeeze-repeats 删除所有重复出现字符序列,只保留一个;即将重复出现字符串压缩为一个字符串。
-t, –truncate-set1 将SET1对应位置的字符转换为SET2集中对应位置的字符
支持字符替换的字符集:
\NNN 八进制值字符NNN(1到3个八进制数字)
\\ \
\a 铃声符
\b 空格
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 垂直制表符
CHAR1-CHAR2 从CHAR1到CHAR2的所有字符按照ASCII字符的顺序
[[:digit:]] 表示任意十进制数字
[[:xdigit:]]表示十六进制数字范围
[[:alpha:]] 表示任意字母
[[:alnum:]] 表示任意字母或数字
[[:upper:]] 表示大写字母
[[:lower:]] 表示小写字母
[[:blank:]] 水平空白字符
[[:space:]] 水平或垂直空白字符
[[:punct:]] 特殊字符
- 常用命令举例
- 字符替换
- 小写转换成大写:
echo abcfsjdlfali | tr a-z A-Z > /tmp/file.out
- 大写转换成小写:
echo abcfsjdlfali | tr A-Z a-z > /tmp/file2.out
- 将输入的字符串中包含set1中字符替换为set2中的字符:
echo abcfsjdlfali | tr 'abc' '123' > /tmp/file3.out
- 将多行合并成一行
- 小写转换成大写:
- 删除字符
- 删除不满足要求的字符:
echo abcfsjdlfali | tr -d 'abc' > /tmp/file4.out
- dos格式文件与linux文件的转换
tr -d '\r' < dos.txt > linux.txt
- 将多行合并成一行
tr -d '\n' < linux.txt > linux.txt.bak
- 删除不满足要求的字符:
- 提取满足要求的字符
- 提取所有字符:
echo kjahdfla12039845lkasdkfiau | tr -cd [[:digit:]]
- 提取所有字符:
- 字符去重
- 去除多余的空格
echo "aksdjf " |tr -s " "
- 去除多余的空格
- 字符替换