Linux系统中tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,下面良许教程网为大家介绍一下Linux系统tr命令的具体使用方法。
语法
tr [-cdst][--help][--version][第一字符集][第二字符集] tr [OPTION]…SET1[SET2]
参数说明:
-
-c, –complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-
-d, –delete:删除指令字符
-
-s, –squeeze-repeats:缩减连续重复的字符成指定的单个字符
-
-t, –truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
-
–help:显示程序用法信息
-
–version:显示程序本身的版本信息
字符集合的范围:
-
NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
-
反斜杠
-
a Ctrl-G 铃声
-
b Ctrl-H 退格符
-
f Ctrl-L 走行换页
-
n Ctrl-J 新行
-
r Ctrl-M 回车
-
t Ctrl-I tab键
-
v Ctrl-X 水平制表符
-
CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
-
[CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
-
[CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
-
[:alnum:] :所有字母字符与数字
-
[:alpha:] :所有字母字符
-
[:blank:] :所有水平空格
-
[:cntrl:] :所有控制字符
-
[:digit:] :所有数字
-
[:graph:] :所有可打印的字符(不包含空格符)
-
[:lower:] :所有小写字母
-
[:print:] :所有可打印的字符(包含空格符)
-
[:punct:] :所有标点字符
-
[:space:] :所有水平与垂直空格符
-
[:upper:] :所有大写字母
-
[:xdigit:] :所有 16 进位制的数字
-
[=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)
案例演示:
将输入字符由大写转换为小写:
echo "HELLO WORLD" | tr 'A-Z' 'a-z' hello world
‘A-Z’ 和 ‘a-z’都是集合,集合是可以自己制定的,例如:’ABD-}’、’bB.,’、’a-de-h’、’a-c0-9’都属于集合,集合里可以使用’n’、’t’,可以可以使用其他ASCII字符。
使用tr删除字符:
echo "hello 123 world 456" | tr -d '0-9' hello world
将制表符转换为空格:
cat text | tr 't' ' '
字符集补集,从输入文本中将不在补集中的所有字符删除:
echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c '0-9 n' 1 2 3 4
此例中,补集中包含了数字0~9、空格和换行符n,所以没有被删除,其他字符全部被删除了。
用tr压缩字符,可以压缩输入中重复的字符:
echo "thissss is a text linnnnnnne." | tr -s ' sn' this is a text line.
巧妙使用tr做数字相加操作:
echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr 'n' '+') 0 ]
删除Windows文件“造成”的’^M’字符:
cat file | tr -s "r" "n" > new_file 或 cat file | tr -d "r" > new_file
tr可以使用的字符类:
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
使用方式:
tr '[:lower:]' '[:upper:]'
以上就是良许教程网为各位朋友介绍的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!
本文来源:www.lxlinux.net/1955.html,若引用不当,请联系修改。