关于linux:scp:如何使用过滤器从远程服务器复制文件

scp: how to copy a file from remote server with a filter

我正在尝试使用SCP从远程服务器复制大型日志文件。但是,我只希望远程日志文件中包含字符串"fail"的行。我现在就是这样做的

1
scp user@ip:remote_folder/logfile* /localfolder

这会将从远程服务器中的日志文件开始的所有文件复制到本地文件夹。文件非常大,我只需要复制那些日志文件中的行,其中包含来自远程服务器的字符串"fail"。有人能告诉我怎么做吗?我可以使用cat或grep命令吗?


使用grep在远程机器和滤波器的输出文件的名称和内容为: </P >

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env bash

BASEDIR=~/temp/log

IFS=$'
'
for match in `ssh user@ip grep -r Fail"remote_folder/logfile*"`
do
    IFS=: read file line <<< $match
    mkdir -p `dirname $BASEDIR/$file`
    echo $line >> $BASEDIR/$file
done

你可能想看看在安解释到IFS在组合与read。。。。。。。 </P >


ssh user@ip grep Fail remote_folder/logfile* </P >