Существует ли стандартная команда Linux, которую я могу использовать для чтения блока файла блоком? Например, у меня есть файл, размер которого составляет 6 КБ. Я хочу читать/печатать первый 1 КБ и затем 2-й 1 КБ... Кажется работой привычки кошки/головы/хвоста в этом случае.
Большое спасибо.
dd сделает это
dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0
А затем skip=1 для второго куска, и так далее.
Затем вам просто нужно прочитать файл output_tmp_file, чтобы получить чанк.
split
может разделить файл на части по заданному количеству байт
Вы действительно пытаетесь прочитать текстовый файл? Как твоими глазами? Попробуйте на меньше
или на больше
вы можете использовать fmt
eg 10bytes
$ 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}'
Вы можете сделать это с помощью read -n
в цикле:
while read -r -d '' -n 1024 BYTES; do
echo "$BYTES"
echo "---"
done < file.dat