Поиск непечатаемых символов.
Я согласен с Харви выше, скрытым в комментариях, часто полезнее искать непечатные символыИЛИ легко думать не ASCII, когда вы действительно должны думать не для печати. Харви предлагает "использовать это:" [^ \ n - ~] ". Добавить \ r для текстовых файлов DOS. Это означает" [^ \ x0A \ x020- \ x07E] "и добавить \ x0D дляCR "
Кроме того, добавление -c (показать количество совпавших шаблонов) в grep полезно при поиске непечатаемых символов, так как совпавшие строки могут испортить терминал.
Я обнаружил добавление диапазона0-8 и 0x0e-0x1f (до диапазона 0x80-0xff) - полезный паттерн.Это исключает TAB, CR и LF и один или два необычных печатных символа.Так что ИМХО довольно полезный (хотя и грубый) шаблон grep - ЭТОТ:
grep -c -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" *
разбивка:
\x00-\x08 - non-printable control chars 0 - 7 decimal
\x0E-\x1F - more non-printable control chars 14 - 31 decimal
\x80-1xFF - non-printable chars > 128 decimal
-c - print count of matching lines instead of lines
-P - perl style regexps
Instead of -c you may prefer to use -n (and optionally -b) or -l
-n, --line-number
-b, --byte-offset
-l, --files-with-matches
Например, практический пример использования find to grepвсе файлы в текущем каталоге:
find . -type f -exec grep -c -P -n "[\x00-\x08\x0E-\x1F\x80-\xFF]" {} +
Вы можете настроить grep время от времени.например, BS (0x08 - backspace) char, используемый в некоторых печатаемых файлах или для исключения VT (0x0B - вертикальная вкладка).В некоторых случаях можно считать, что символы BEL (0x07) и ESC (0x1B) можно распечатать.
Non-Printable ASCII Chars
** marks PRINTABLE but CONTROL chars that is useful to exclude sometimes
Dec Hex Ctrl Char description Dec Hex Ctrl Char description
0 00 ^@ NULL 16 10 ^P DATA LINK ESCAPE (DLE)
1 01 ^A START OF HEADING (SOH) 17 11 ^Q DEVICE CONTROL 1 (DC1)
2 02 ^B START OF TEXT (STX) 18 12 ^R DEVICE CONTROL 2 (DC2)
3 03 ^C END OF TEXT (ETX) 19 13 ^S DEVICE CONTROL 3 (DC3)
4 04 ^D END OF TRANSMISSION (EOT) 20 14 ^T DEVICE CONTROL 4 (DC4)
5 05 ^E END OF QUERY (ENQ) 21 15 ^U NEGATIVE ACKNOWLEDGEMENT (NAK)
6 06 ^F ACKNOWLEDGE (ACK) 22 16 ^V SYNCHRONIZE (SYN)
7 07 ^G BEEP (BEL) 23 17 ^W END OF TRANSMISSION BLOCK (ETB)
8 08 ^H BACKSPACE (BS)** 24 18 ^X CANCEL (CAN)
9 09 ^I HORIZONTAL TAB (HT)** 25 19 ^Y END OF MEDIUM (EM)
10 0A ^J LINE FEED (LF)** 26 1A ^Z SUBSTITUTE (SUB)
11 0B ^K VERTICAL TAB (VT)** 27 1B ^[ ESCAPE (ESC)
12 0C ^L FF (FORM FEED)** 28 1C ^\ FILE SEPARATOR (FS) RIGHT ARROW
13 0D ^M CR (CARRIAGE RETURN)** 29 1D ^] GROUP SEPARATOR (GS) LEFT ARROW
14 0E ^N SO (SHIFT OUT) 30 1E ^^ RECORD SEPARATOR (RS) UP ARROW
15 0F ^O SI (SHIFT IN) 31 1F ^_ UNIT SEPARATOR (US) DOWN ARROW