tr-转换或者删除字符

来源:互联网 发布:辩论赛网络利大于弊 编辑:程序博客网 时间:2024/05/19 22:55
tr:
       转换或者删除字符, 要特别注意是按字符处理不是字符串


语法格式:
       tr [OPTION]... SET1 [SET2] 
       
参数说明:
        -s, --squeeze-repeats    把连续重复的字符以单独一个字符表示;       
                                 替换字符, 当参数SET2存在时(同时也去掉重复)


        -d, --delete             删除所有属于第一字符集的字符


        -t, --truncate-set1      将set1的字符依次替换成set2中的字符, 如果 \
                                 set1中的字符数目超过set2, 那么set1多出的 \
                                 字符忽略. 如果没有-t, 那么多出的字符都替 \
                                 换成set2的最后一个字符.


       -c                        用SET2最后的字符替换SET1补集内的字符


说明: 在vim中可以直接使用tr命令。使用示例如下: 1,$!tr -s ":' ","。 \
       其中1,$表示的是范围:从第1行到最后一行;!表示在vim中执行命令


tr中特定控制字符的不同表达方式:
\a Ctrl-G  铃声\007
\b Ctrl-H  退格符\010
\f Ctrl-L  换页符\014
\n Ctrl-J  新行\012
\r Ctrl-M  回车\015
\t Ctrl-I  tab键\011
\v Ctrl-X  \030


字符范围:
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。


示例:
tr -cs "[^a-z][^A-Z]" "\012" < a.txt
    把所有非英语字母替换为换行符, 然后再压缩空行.


tr -s "csf" "lxy" < a.txt
    把csf替换成lxy


tr -s "csf" < a.txt
tr -s "[a-z]" < a.txt
    第一个把重复的c,s和f压缩成一个c,s和f; t第二个把重复的小写字母压缩成一个


tr -d "csflxy < a.txt
        删除c,s, f, l, x, y字符




0 0