Linux下的tr命令,是translate的缩写,它从标准输入中读取内容,然后做替换、删除或转换操作,然后将处理后的内容送到标准输出,感觉像一个筛子。使用tr时需要指定两个字符串:第一个字符串为源对象,第二个字符串为目的对象。tr命令执行过程中,源对象中的字符被映射到目的对象中的字符,然后附加其他参数完成不同的转换。
tr命令的常用格式为:
tr -c -d -s "string1_to_translate_from" ["string2_to_translate_to"] < input-file
常用参数:
-c 反选设定的源对象,也就是符合源对象的string1_to_translate_from部分不做处理,不符合的剩下部分才进行转换 -d 删除指令字符 -s 缩减指定的连续重复的单个字符 -t 削减源对象的转换区域到适当范围,使之与目标对象的长度相匹配
应用实例:
1、转换文档中的大小写
trevor@trevor-PC:~/linux/linux100$ cat file-Aa This is A Test For The Command tr. trevor@trevor-PC:~/linux/linux100$ tr 'A-Z' 'a-z' < file-Aa > file-a trevor@trevor-PC:~/linux/linux100$ cat file-a this is a test for the command tr. trevor@trevor-PC:~/linux/linux100$ tr 'a-z' 'A-Z' < file-Aa > file-A trevor@trevor-PC:~/linux/linux100$ cat file-A THIS IS A TEST FOR THE COMMAND TR. trevor@trevor-PC:~/linux/linux100$ tr 'a-zA-Z' 'A-Za-z' < file-Aa > file-aA trevor@trevor-PC:~/linux/linux100$ cat file-aA tHIS IS a tEST fOR tHE cOMMAND TR. trevor@trevor-PC:~/linux/linux100$
2、压缩文档中过多的连续空格或空行
trevor@trevor-PC:~/linux/linux100$ cat file-s This is a test for the command tr ! trevor@trevor-PC:~/linux/linux100$ tr -s ' ' ' ' < file-s > file-s-blank trevor@trevor-PC:~/linux/linux100$ cat file-s-blank This is a test for the command tr ! trevor@trevor-PC:~/linux/linux100$ tr -s '\n' '\n' < file-s-blank > file-s-newline trevor@trevor-PC:~/linux/linux100$ cat file-s-newline This is a test for the command tr ! trevor@trevor-PC:~/linux/linux100$ tr -s ' ' '^' < file-s-newline > file-s-replace trevor@trevor-PC:~/linux/linux100$ cat file-s-replace This^is^a^test for the^command^tr^! trevor@trevor-PC:~/linux/linux100$
3、将文档中的字符一一替换成对应的另一字符
trevor@trevor-PC:~/linux/linux100$ cat file-t a ab abc abcdefg abc xyz trevor@trevor-PC:~/linux/linux100$ tr 'a-z' '012' < file-t 0 01 012 0122222 012 222 trevor@trevor-PC:~/linux/linux100$ tr -t 'a-z' '012' < file-t 0 01 012 012defg 012 xyz trevor@trevor-PC:~/linux/linux100$
4、删除文档中的指定字符
trevor@trevor-PC:~/linux/linux100$ cat file-d a ab abc abcdefg abc xyz trevor@trevor-PC:~/linux/linux100$ tr -d 'c' < file-d a ab ab abdefg ab xyz trevor@trevor-PC:~/linux/linux100$
除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。
root@glq2000-E300:~/test_code/bash_test# tr ‘a-z’ ‘012’ < af
0
01
012
02202 02022 02222222222222222
root@glq2000-E300:~/test_code/bash_test# tr 'a-c' '012' < af
0
01
012
0df0f 0f0sf 0fwerwtgdfhrtuyrt
我试了下 和楼主的tr的例子有点出入 貌似是c以后的都被2替换
你是指的第一行命令吧,c以后被替换为2是正确的,如果c之后不想被替换,可以加上参数-t。
对应应用实例3
哦 理解了~
-t, –truncate-set1
first truncate SET1 to length of SET2