Bash 如何对已下载文件的部分执行操作

Bash 如何对已下载文件的部分执行操作,bash,shell,ftp,Bash,Shell,Ftp,我为问题的标题道歉,但我很抱歉。它确定了如何最好地总结这一点。基本上,我在服务器上托管了非常大的文本文件。我没有能力下载整个文件。我有一个shell脚本,我想在文本文件的各行上运行它。是否有一种方法可以通过ftp下载文件块并在此块上执行shell脚本,然后下载下一个块,最好覆盖上一个块以执行shell脚本等。在ftp模式下,通过将输出更改为stdout而不是本地文件名,然后使用dd或从头到尾去获取数据 下面的代码通过FTP连接到我的本地主机,并获取文件/tmp/ppm.c,然后使用dd将bloc

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

在ftp模式下,通过将输出更改为stdout而不是本地文件名,然后使用dd或从头到尾去获取数据

下面的代码通过FTP连接到我的本地主机,并获取文件/tmp/ppm.c,然后使用dd将blocksize设置为1k并跳过第一个块,将输出写入文件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

那么这会下载第二个和第三个块吗?我将如何下载后续的块?我已更新以演示如何在循环中执行几个块。实际上,我将每个块保存在不同的文件中,以演示该技术。我想您会想覆盖上一个文件,因此您的命令将以dd bs=100 count=1 skip=$block>block.txt结尾。您真的需要FTP吗?SSH可用吗?
#!/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