使用 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
或另一个处理文件内容的实用程序。
我想读取位于 不同服务器 上的一个巨大文件的前 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
或另一个处理文件内容的实用程序。