【发布时间】:2020-01-10 11:28:56
【问题描述】:
我将 grep 的结果传递给 AWK,并将结果用作 EOF 中另一个 grep 的模式(不确定那里的术语是什么),但 AWK 给了我空白的结果。以下是给我带来问题的 bash 脚本的一部分。
ssh "$USER"@logs << EOF
zgrep $wgr $loc$env/app*$date* | awk -F":" '{print $5 "::" $7}' | awk -F"," '{print $1}' | sort | uniq | while read -r rid ; do
zgrep $rid $loc$env/app*$date*;
done
EOF
我真的在这里画了一个空白,因为没有错误而且我没有想法。
样品:
我正在查找如下所示的日志文件:
app-server.log.2020010416.gz:2020-01-04 16:00:00,441 INFO [redacted] (redacted) [rid:12345::12345-12345-12345-12345-12345,...
我对 rid 感兴趣,我可以再次在日志中 grep:
zgrep $rid $loc$env/app*$date*
loc、env 和 date 工作正常,但它们在 EOF 之外。
整个脚本连接到 ssh 并正常退出,但我没有得到任何结果。
【问题讨论】:
-
没有看到输入和预期输出的样本,很难完全得到需求,所以请在你的帖子中添加样本,然后让我们知道。
-
@RavinderSingh13 添加了更多信息,如果需要更多信息,请告诉我。
-
恕我直言,我们可以做些什么来解决这些问题:第一步-准备在目标服务器上运行的命令(从实际日志所属的位置),一旦完成第二步-使用需要对每个 ssh 进行更改才能从 ssh 运行它。现在让我们开始第一步-首先在目标服务器本身上准备命令,因为我们需要知道您需要什么示例输出,所以请更清楚。
-
@RavinderSingh13 原始命令在 ssh 服务器
zgrep $wgr $loc$env/app*$date* | awk -F":" '{print $5 "::" $7}' | awk -F"," '{print $1}' | sort | uniq | while read -r rid ; do zgrep $rid $loc$env/app*$date*;上按预期工作。当然想像wgr和loc被更改为propper 值。但是 ssh 服务器需要进行哪些更改? -
我认为你需要逃避 $5 和 $7