【发布时间】:2011-01-24 06:12:58
【问题描述】:
是否有一个标准的 Linux 命令可以用来逐块读取文件? 例如,我有一个大小为 6kB 的文件。我想读取/打印第一个 1kB,然后是第二个 1kB ... 在这种情况下,似乎 cat/head/tail 不起作用。
非常感谢。
【问题讨论】:
是否有一个标准的 Linux 命令可以用来逐块读取文件? 例如,我有一个大小为 6kB 的文件。我想读取/打印第一个 1kB,然后是第二个 1kB ... 在这种情况下,似乎 cat/head/tail 不起作用。
非常感谢。
【问题讨论】:
您是否尝试真正读取一个文本文件?和你的眼睛一样吗?试试less 或more
【讨论】:
你可以使用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}'
【讨论】:
dd会做的
dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0
然后 skip=1 用于第二个块,依此类推。
然后你只需要读取 output_tmp_file 来获取块。
【讨论】:
您可以在循环中使用read -n 执行此操作:
while read -r -d '' -n 1024 BYTES; do
echo "$BYTES"
echo "---"
done < file.dat
【讨论】:
split 可以根据给定的字节数将文件分割成片段
【讨论】: