32: How do I search for, delete, or replace unprintable (8-bit or control)
characters?
To search for a single character that appears in the buffer as, for
example, "\237", you can type "C-s C-q 2 3 7". (This assumes the value
of search-quote-char is 17 (i.e., `C-q').) Searching for ALL unprintable
characters is best done with a regular expression ("regexp") search. The
easiest regexp to use for the unprintable chars is the complement of the
regexp for the printable chars.
Regexp for the printable chars: [\t\n\r\f -~] Regexp for the
unprintable chars: [^\t\n\r\f -~]
To type these special characters in an interactive argument to
isearch-forward-regexp or re-search-forward, you need to use C-q. (`\t',
`\n', `\r', and `\f' stand respectively for TAB, LFD, RET, and C-l.) So,
to search for unprintable characters using re-search-forward:
M-x re-search-forward RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET
Using isearch-forward-regexp:
M-C-s [^ TAB RET C-q RET C-q C-l SPC -~]
To delete all unprintable characters, simply use replace-regexp:
M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET RET
Replacing is similar to the above. To replace all unprintable characters
with a colon, use:
M-x replace-regexp RET [^ TAB C-q LFD C-q RET C-q C-l SPC -~] RET : RET
NOTE: * You don't need to quote TAB with either isearch or typing
something in the minibuffer.