Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 组合tail和sed命令并将它们重定向到新文件_Shell_Sed_Tail - Fatal编程技术网

Shell 组合tail和sed命令并将它们重定向到新文件

Shell 组合tail和sed命令并将它们重定向到新文件,shell,sed,tail,Shell,Sed,Tail,我正在连接到多个远程服务器,并使用tail命令将这些日志文件显示到本地系统。由于所有日志文件都是动态生成的,我们无法区分它们。所以我想将日志文件和serevrid重定向到日志文件的每一行,然后再将临时文件尾部,这样在本地机器上我们可以区分不同的服务器日志文件 我正在使用 (sed -e '/s/^/192.168.12.1' /logs/a.log; tail -f /logs/a.log) > b.log tail -f b.log 但现在只有很少的起始行使用serverid更新,而不

我正在连接到多个远程服务器,并使用tail命令将这些日志文件显示到本地系统。由于所有日志文件都是动态生成的,我们无法区分它们。所以我想将日志文件和serevrid重定向到日志文件的每一行,然后再将临时文件尾部,这样在本地机器上我们可以区分不同的服务器日志文件

我正在使用

(sed -e '/s/^/192.168.12.1' /logs/a.log; tail -f /logs/a.log) > b.log
tail -f b.log
但现在只有很少的起始行使用serverid更新,而不是动态生成后的所有行。因此,请告诉我如何将serverid与日志文件的每一行连接起来

sed --unbuffered -e 's/^/192.168.12.1/' /logs/a.log >> b.log
tail -f b.log
如果您想要一个文件而不是一个简单的

sed --unbuffered -e 's/^/192.168.12.1/' /logs/a.log 

将正常工作

我得到了答案。我使用以下代码获取模式:

tail -f '/logs/alog' | sed 's/^/'192.168.12.1'/' >> b.log
tail -f b.log

您必须将>更改为>>。这并不是说这不能保证最终文件中的输出顺序。现在,只有第1行被连接,而不是所有的行。如果您试图将该IP地址放在.log的每一行的开头,您希望使用sed。@EtanReisner:如何将这两个命令添加在一起。我尝试的是:sed-e的/^/prefix/'/logs/a.log;tail-f/logs/a.log>>b.log,但由于它是动态生成的,最初只会连接,以后不会连接。听起来您想使用syslog发送日志。然后您可以免费获得服务器IP。@NeroneLeVelu:在这种情况下,只有静态文件得到更新。但我想在动态生成的日志文件中添加IP地址。我理解这个词,但在代码中可以使用的动态值是什么?我只看到一个固定的字符串,它是一个IP地址,所以绝对不是动态的