如何对下载文件的某些部分执行操作

How to perform action on parts of a downloaded file

很抱歉问题的标题,但我是。它确定如何最好地总结这一点。基本上我在服务器上托管了非常大的文本文件。我没有能力下载整个文件。我有一个 shell 脚本,我想在文本文件的各个行上 运行。有没有办法(ftp)下载文件块并在该块上执行 shell 脚本,然后下载下一个块(最好覆盖前面的块)以执行 shell脚本等

您应该能够在 FTP 模式下使用 curl 执行此操作,方法是将输出更改为 stdout 而不是本地文件名,然后使用 ddheadtail 获取数据。

以下通过 FTP 连接到我的本地主机并获取文件 <HOME>/tmp/ppm.c 然后使用 dd 将块大小设置为 1k 并跳过第一个块,将输出写入文件 2nd1kB.txt.

curl --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=1024 skip=1 count=1 > 2nd1kB.txt

如果你想要多个块,你将需要一个循环。这里我只是从 0 循环到 3:

#!/bin/bash
for block in {0..3}; do
   echo Grabbing block $block
   curl --silent --output - --user user:password 'ftp://127.0.0.1/tmp/ppm.c' | dd bs=100 count=1 skip=$block > Block${block}.txt
done