Читать символы из текстового файла, используя bash - PullRequest
4 голосов
/ 10 июня 2009

Кто-нибудь знает, как я могу прочитать первые два символа из файла, используя скрипт bash. Данный файл на самом деле является драйвером ввода-вывода, в нем нет символов новой строки, и он фактически бесконечно длинен.

Ответы [ 4 ]

11 голосов
/ 10 июня 2009

Встроенный read поддерживает параметр -n:

$ echo "Two chars" | while read -n 2 i; do echo $i; done
Tw
o
ch
ar
s

$ cat /proc/your_driver | (read -n 2 i; echo $i;)
4 голосов
/ 10 июня 2009

я думаю dd if=your_file ibs=2 count=1 сделает свое дело

Глядя на него с помощью strace, видно, что он эффективно выполняет чтение двух байтов из файла. Вот пример чтения из / dev / zero и переданного в hd для отображения нуля:

dd if=/dev/zero bs=2 count=1 | hd
1+0 enregistrements lus
1+0 enregistrements écrits
2 octets (2 B) copiés, 2,8497e-05 s, 70,2 kB/s
00000000  00 00                                             |..|
00000002
1 голос
/ 23 марта 2010
echo "Two chars" | sed 's/../&\n/g'
1 голос
/ 10 июня 2009

G'day,

Почему бы не использовать od, чтобы получить нужный фрагмент?

od --read-bytes=2 my_driver

Редактировать: Вы не можете использовать head для этого, так как команда head печатает на стандартный вывод. Если первые два символа недоступны для печати, вы ничего не увидите.

Команда od имеет несколько опций для форматирования байтов, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...