Как мне выгружать необработанные двоичные "биты" из файла без номеров строк и интерпретации ASCII?
Как вывести "чистую" и простую двоичную последовательность битов?
Например, у меня есть это:
0000000: 10001001 01010000 01001110 01000111 00001101 00001010 .PNG..
0000006: 00011010 00001010 00000000 00000000 00000000 00001101 ......
000000c: 01001001 01001000 01000100 01010010 00000000 00000000 IHDR..
0000012: 00000010 01011000 00000000 00000000 00000001 10010000 .X....
0000018: 00001000 00000010 00000000 00000000 00000000 11111101 ......
000001e: 01010111 10001001 11001111 00000000 00000000 00000000 W.....
0000024: 00000111 01110100 01001001 01001101 01000101 00000111 .tIME.
Эти номера строк слева, а ASCII справа - проблема для меня. Я попробовал это, чтобы удалить это:
xxd -b /root/Desktop/image.png | sed -r "s/\d32{3,}.*//g" | sed "s/.*://" | sed "s/\d32//g"
Однако мне это не удалось
100010010101000001001110010001110000110100001010.PNG..
000110100000101000000000000000000000000000001101......
010010010100100001000100010100100000000000000000IHDR..
000000100101100000000000000000000000000110010000.X....
000010000000001000000000000000000000000011111101......
010101111000100111001111000000000000000000000000W.....
000001110111010001001001010011010100010100000111.tIME.
Есть ли такой инструмент, как "xxd" или "hexdump" или что-то, что может создать чистую двоичную последовательность из файла?
Например,
01010101000100100100010100100010000010101010101010101001011
10101010101010100100101010101010100000010001000100001000000
1 ответ
Решение
Достаточно просто разобрать вывод в нужный формат:
xxd -b /root/Desktop/image.png | cut -d: -f 2 | sed 's/ .*//; s/ //g'
cut
удалит номера строк, а sed сначала удалит последний столбец (s/ .*//
удалит все, что идет после двух последовательных пробелов), а затем удалит все одиночные пробелы.
Вы также можете использовать awk
:
xxd -b ~/a.png | awk '{print $2$3$4$5$6$7}'
Или Perl:
xxd -b ~/a.png | head -1 | perl -lane 'print join "",@F[1..6]'
Или coreutils:
xxd -b ~/a.png | cut -d" " -f2-7 | tr -d ' '