Linux Shell TR Command detailed
1. Use
A shorthand for tr,translate, which is used to compress repeating characters, delete control characters in a file, and perform character conversion operations.
2. Syntax
TR [OPTION] ... SET1 [SET2]
3. Parameters
3.1-s compressing repeating characters
-s:squeeze-repeats, replaces the corresponding repeating character with the character specified by SET1 (replace each input sequence of a repeated character the is listed in SET1 with A single occurrence of that character)
xiaosi@qunar:~/test$ echo "AAABBBAACCCFDDD" | tr-s [ABCDF]//ABACFD
You can use this feature to delete blank lines in a file, essentially the same as above, by replacing the corresponding repeating character with the character specified by SET1
xiaosi@qunar:~/test$ cat B.txti like Footballfootball is very fun! helloxiaosi@qunar:~/test$ Cat B.txt | tr-s ["\ n"]i like Footballfootball is very fun! Hello
3.2-d deleting characters
-d:delete, deleting all characters specified in SET1, does not convert (delete characters in SET1, does not translate)
xiaosi@qunar:~/test$ echo "A12HJ13FDAADFF" | Tr-d "[a-z][a-z]" 1213xiaosi@qunar:~/test$ echo "a1213fdasf" | tr-d [adfs]1213
3.3 Character substitution
-t:truncate, the characters in the SET1 are replaced with the characters in the SET2 corresponding position, the default is-t
xiaosi@qunar:~/test$ echo "A1213FDASF" | tr-t [AfD] [AFO]//A1213FOASF
The code above converts a to a,f conversion to F,d to O.
You can use this feature to convert large and small letters.
xiaosi@qunar:~/test$ echo "Hello World I Love You" |tr-t [A-z] [A-z]hello World I love youxiaosi@qunar:~/test$ echo HELL O World I Love You "|tr-t [A-z] [A-z]hello World I Love You
You can also use a character set to convert
xiaosi@qunar:~/test$ echo "Hello World I Love your" |tr-t [: Lower:] [: Upper:]hello World I love youxiaosi@qunar:~/test$ EC Ho "HELLO World I Love your" |tr-t [: Upper:] [: Lower:]hello World I Love You
Note:
The character set is as follows
\nnn octal value character NNN (1 to 3 characters of octal value) \ \ backslash \a ctrl-g ringtone \b ctrl-h backspace \f ctrl-l walk-through page \ n ctrl-j new line \ r ctrl-m enter \ t ctrl-i tab \v Ct Rl-x horizontal tab CHAR1-CHAR2 All characters from CHAR1 to CHAR2 in the order of ASCII characters [char*] in SET2, copies of CHAR until length of set1[char*repeat] REP EAT copies of CHAR, REPEAT octal if starting with 0[:alnum:] All letters and numbers [: Alpha:] All Letters [: blank:] Horizontal tab, blank, etc. [: Cntrl:] All control characters [:d I Git:] All the numbers [: graph:] All printable characters, excluding spaces [: lower:] All lowercase characters [:p rint:] All printable character, including spaces [:p UNCT:] All punctuation characters [: space:] All horizontal or vertical blanks [: Upper:] All uppercase letters
3.4-Character complement substitution
-c:complement, replacing characters that are not contained in SET1 with SET2
xiaosi@qunar:~/test$ cat A.txtmonday 09:00tuesday 09:10wednesday 10:11thursday 11:30friday 08:00saturday 07:40sunday 10:00xiaosi@qunar:~/test$ cat a.txt | tr-c "[a-z][a-z]" "#" | tr-s "#" | tr-t "#" \ n "Mondaytuesdaywednesdaythursdayfridaysaturdaysunday
Tr-c "[A-z][a-z]" "#" in the above code means replacing all word nonalphanumeric except the size letter with #.
The above code can be optimized to:
xiaosi@qunar:~/test$ Cat A.txt | Tr-cs "[a-z][a-z]" "\ n" mondaytuesdaywednesdaythursdayfridaysaturdaysunday
Thank you for reading, I hope the tender help to everyone, thank you for the support of this site!