Командная оболочка Linux для чтения / печати фрагмента файла по фрагменту - PullRequest
4 голосов
/ 05 марта 2010

Существует ли стандартная команда Linux, которую я могу использовать для чтения фрагмента файла по фрагменту? Например, у меня есть файл, размер которого составляет 6 КБ. Я хочу прочитать / распечатать первый 1 КБ, а затем 2-й 1 КБ ... Кажется, что кошка / голова / хвост не будут работать в этом случае.

Большое спасибо.

Ответы [ 5 ]

7 голосов
/ 05 марта 2010

Вы можете сделать это с read -n в цикле:

while read -r -d '' -n 1024 BYTES; do
    echo "$BYTES"
    echo "---"
done < file.dat
4 голосов
/ 05 марта 2010

dd сделает это

dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0

И затем пропустите = 1 для второго фрагмента и т. Д.

Затем вам просто нужно прочитать файл output_tmp_file, чтобы получить блок.1006 *

1 голос
/ 06 марта 2010

Вы действительно пытаетесь прочитать текстовый файл? Как с твоими глазами? Попробуйте less или more

1 голос
/ 05 марта 2010

split может разбить файл на части по заданному числу байтов

0 голосов
/ 06 марта 2010

вы можете использовать fmt

например, 10 байтов

$ cat file
a quick brown fox jumps over the lazy dog
good lord , oh my gosh

$ tr '\n' ' '<file | fmt -w10 file
a quick
brown fox
jumps
over
the lazy
dog good
lord , oh
my gosh

каждая строка 10 символов. Если вы хотите прочитать второй блок, передайте его таким инструментам, как awk ..eg

$ tr '\n' ' '<file |  fmt -w10 | awk 'NR==2' # print 2nd chunk
brown fox

Для сохранения каждого чанка в файл (или вы можете использовать split с -b)

$ tr '\n' ' '<file |  fmt -w10 | awk '{print $0 > "file_"NR}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...