使用 bash 命令从远程服务器读取一个大文件的前 n 行

Read first n lines of a huge file from remote server using bash command

我想读取位于 不同服务器 上的一个巨大文件的前 n 行。我正在使用 scp 复制文件:

sshpass -p $password scp $username@$server:$path_to_file "$content_file"

但是,我只想要文件的前几行。如果文件很大,我最终会先下载整个文件,然后使用 head 命令读取前 n 行。我尝试用 scp 替换 head 但这对我没有帮助。请推荐正确的方法。

您可以使用以下命令将远程结果输出到本地。

ssh hostA head srcfile > destfile

或者使用下面的方法将本地输出输出到远程。

ssh hostA 'head > destfile' < srcfile

这有点像 hack。但是如果你仅限于 scp 实用程序,并且你的本地主机是 unix-like,你可以这样做:

scp user@host:/some/file /dev/stdout | head > destfile

这会导致 scp 开始下载远程文件,并将其写入 scp 的标准输出。您可以将该输出通过管道传输到 head 或另一个处理文件内容的实用程序。