If you send non-printable characters to your TTY you might corrupt it, and that’s no fun.
So before you print log files which might contain dodgy data to a console clean it by piping it through tr like this:
tr -c '\11\12\15\40-\176' '?'
If you send non-printable characters to your TTY you might corrupt it, and that’s no fun.
So before you print log files which might contain dodgy data to a console clean it by piping it through tr like this:
tr -c '\11\12\15\40-\176' '?'
To trim new lines in bash:
tr -d '\r\n'
If you have a list of file names separated by new lines, and you want to turn it into a list of file names separated by null characters, for instance for use as input to xargs, then you can use the tr command, like this:
$ cat /path/to/new-lines | tr '\n' '\0' > /path/to/null-separated
I found a whole article on various ways to replace text on *nix: rmnl — remove new line characters with tr, awk, perl, sed or c/c++.
I learned about the ‘tr’ Unix command today. It’s for translating text in streams. The particular example was:
echo | tr '012' '001'
And I didn’t really understand what that did, but now I do. Basically the ‘echo’ part will echo a new line character, which is octal 012. Then tr will read its input stream and read that new line. It then has a rule to translate 012 (new line) to 001 (Ctrl+A), which it does. So basically it’s just a way of getting a Ctrl+A character in a stream. If you use Ctrl+A as your regular expression delimiter you’re unlikely to have a collision in the expression itself.