linux常用命令tr

it2024-10-02  72

tr命令介绍

tr命令的作用是从标准输入中替换或删除字符串,并将处理后的内容写到标准输出。

语法格式

tr [option] … set1 [set2]

常用选项

-c,-C,--complement,使用字符集set1进行替换 -d,--delete,删除匹配set1的内容,不进行替换 -s,--squeeze-repeats,在输入字符集中,若能连续不间断的匹配SET1,在删除重复出现的内容,只保一各,即将重复出现字符串压缩为一个字符串 -t,--truncate-set1,将set1截取到与set2相同的长度

字符集合:

\NNN 八进制值为NNN 的字符(1 至3 个数位) \\ 反斜杠 \a 终端鸣响 \b 退格 \f 换页 \n 换行 \r 回车 \t 水平制表符 \v 垂直制表符 字符1-字符2 从字符1 到字符2 的升序递增过程中经历的所有字符 [字符*] 在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度 [字符*次数] 对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数 [:alnum:] 所有的字母和数字 [:alpha:] 所有的字母 [:blank:] 所有呈水平排列的空白字符 [:cntrl:] 所有的控制字符 [:digit:] 所有的数字 [:graph:] 所有的可打印字符,不包括空格 [:lower:] 所有的小写字母 [:print:] 所有的可打印字符,包括空格 [:punct:] 所有的标点字符 [:space:] 所有呈水平或垂直排列的空白字符 [:upper:] 所有的大写字母 [:xdigit:] 所有的十六进制数 [=字符=] 所有和指定字符相等的字符

使用tr进行字符串替换

使用tr进行字符串替换是,需要提供两个字符串,字符串1用于匹配字符串,字符串2用于处理各种转换,

1、使用tr命令将标准输入中的i替换为h [root@mgr1 els]# echo abcdefgi |tr i h abcdefgh 2、使用-c选项,将标准输入字符集中不与匹配abc(set1)的字符串全部替换为h(set2) [root@mgr1 els]# echo abcdefgi |tr -c abc h abchhhhhh 3、将文件file中的全部替换为z [root@mgr1 els]# cat a|tr "a" z zbcdzbcdzbcdzbcd 4、将文件file中所有的小写字符全部转换为大写(set1 和set2一定要加引号) [root@mgr1 els]# echo abcd | tr '[a-z]' '[A-Z]' ABCD 5、把文件中的字符替换为数字 [root@mgr1 els]# cat a|tr '[a-z]' '[0-9]' 0123 6、删除文件出现的字符abc [root@mgr1 els]# more a abcd [root@mgr1 els]# cat a|tr -d 'abc' d [root@mgr1 els]# 注意:这里删除的字符abc,不是整体的字符串“abc”,而是a,b,c三个字符,只要文件中出现a,b,c都会被删除 7、将文件中连续出现的a压缩到一个 [root@mgr1 els]# more a abcdaaa [root@mgr1 els]# cat a|tr -s "a" abcda 8、删除文件中出现的"\n"或"\t"等字符 [root@mgr1 els]# more a abcd a bcaaa [root@mgr1 els]# cat a| tr -d "\n\t" abcdabcaaa 9、删除文件中的空行 [root@mgr1 els]# more a abcd a bc aaa [root@mgr1 els]# cat a |tr -s "\n" abcd a bc aaa 10、删除文件中由windows系统造成的“^M”字符 # cat a|tr -d '\r' # cat a|tr -s '\r' '\n' 11、使用tr实现文件的加解密 # 加密 [root@mgr1 els]# echo "welcom linux" |tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 'hijklnmABCDEFGopqrstuvwxyzOPQRSTUVWXYZHIJKLNMabcdefg' dSZQJH ZWIbe # 解密 [root@mgr1 els]# echo 'dSZQJH ZWIbe' |tr 'hijklnmABCDEFGopqrstuvwxyzOPQRSTUVWXYZHIJKLNMabcdefg' 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' welcom linux 12、从文本中将未在set1补集中出现的内容全部删除 [root@mgr1 els]# more a abcdefghijklmn [root@mgr1 els]# cat a|tr -d -c "ahj" ahj 13、把文本中未在set1补集中出现的字符,全部使用set2补集中的字符串替换,注意,在这种场景下,set2只能一个字符生效,即使给出多个字符,也是最后一个字符生效 [root@mgr1 els]# cat a | tr -c "ahj" "z" azzzzzzhzjzzzzz [root@mgr1 els]# cat a | tr -c "ahj" "uvwxyz" azzzzzzhzjzzzzz 14、压缩文件中的空格 [root@mgr1 els]# more a| tr -s ' ' abcd a nb caaa
最新回复(0)