atr: transform characters from the std input usage: atr [options] [input_set] [output_set] the sets are character sets, where the definition is: - simple character: h - char range: first and last char, separated by a colon: a-k - predefined ranges: - alnum: alphanumeric (letters and digits) - alpha: alphabetic (letters) - digit: numeric characters - lower: lower-case chars - upper: upper-case chars - space: whitespaces - xdigit: hexadecimal characters The previous items can be combined with the comma. Range examples: a-f,m,n * digit,p-z * a,b,c,k,1,3,5,7 * K-P,T-Z options: -d: delete characters in the first set from the output -s: squeeze repeated chars -c: use the complementer set of that in the parameter None of the previous switches means simple replacement: the characters in the first set will be replaced by the corresponding one in the second set. The sets must have the same number of items (special case: the output set consists only of a simple character: each char from the first set will be replaced by this one). The replaced/modified strings ar written to the std out. Examples: acat test.txt | atr a,b,c z,y,x -> 'a' -> 'z', 'b' -> 'y', 'c' -> 'x' ... | atr upper lower -> 'a' -> 'A' and so on ... | atr a-f,m,n + -> 'a,b,c,d,e,f,m,n' -> '+' ... | atr -d a,d -> 'apple data' -> 'pple ata' ... | atr -s -> 'employee foo' -> 'employe fo' ... | atr -c f-h # -> each input char, except f,g,h, will be repalced by sharp sign