Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux shell命令逐块读取/打印文件_Linux_File_Shell - Fatal编程技术网

Linux shell命令逐块读取/打印文件

Linux shell命令逐块读取/打印文件,linux,file,shell,Linux,File,Shell,是否有一个标准的Linux命令可以用于逐块读取文件? 例如,我有一个大小为6kB的文件。我想读取/打印第一个1kB,然后是第二个1kB。。。 看来猫/头/尾在这种情况下不起作用 非常感谢。split可以根据给定的字节数将文件拆分为多个部分您可以通过循环中的读取-n来执行此操作: while read -r -d '' -n 1024 BYTES; do echo "$BYTES" echo "---" done < file.dat 读取时-r-d'-n1024字节;做

是否有一个标准的Linux命令可以用于逐块读取文件? 例如,我有一个大小为6kB的文件。我想读取/打印第一个1kB,然后是第二个1kB。。。 看来猫/头/尾在这种情况下不起作用


非常感谢。

split
可以根据给定的字节数将文件拆分为多个部分

您可以通过循环中的
读取-n
来执行此操作:

while read -r -d '' -n 1024 BYTES; do
    echo "$BYTES"
    echo "---"
done < file.dat
读取时-r-d'-n1024字节;做
回显“$BYTES”
回声--“
完成
dd会做的

dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0
然后对第二个块跳过=1,依此类推


然后,您只需读取输出\u tmp\u文件即可获得区块。

您可以使用
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

您正在尝试实际读取文本文件吗?你的眼睛怎么样?试试
少一点
多一点

谢谢你的回复,看起来很有希望。在我这样做之后:dd if=eco.log bs=1024 count=1 skip=1(我更喜欢输出而不是stdout)我得到了我想要的信息,之后是:0+1记录在0+1记录中,508字节(508 B)被复制,6.6e-05秒,7.7 MB/s我怎么能忽略上面的i/O统计信息?我使用了dd,没有这样愚蠢的选项。没关系,只是发现这些I/O统计数据被输出到stderr。我很容易忽略这些。谢谢大家!我怎样才能使它以十六进制打印?
$ tr '\n' ' '<file |  fmt -w10 | awk 'NR==2' # print 2nd chunk
brown fox
$ tr '\n' ' '<file |  fmt -w10 | awk '{print $0 > "file_"NR}'