我正在将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感兴趣,我可以再次在日志中重复该代码:
zgrep $rid $loc$env/app*$date*
loc
,env
和date
正常工作,但它们不在EOF范围内。
脚本作为一个整体连接到ssh并正常退出,但是我没有任何结果。
[请您试一下。公平的警告,由于缺少样本,我无法对其进行测试。
##Configure/define your shell variables(wgr, loc, env, date, rid) here.
printf -v var_wgr %q "$wgr"
printf -v var_loc %q "$loc"
printf -v var_env %q "$env"
printf -v var_date %q "$date"
printf -v var_rid %q "$rid"
ssh -T -p your_pass root@"$host" "bash -s $var_str" <<'EOF'
# retrieve it off the shell command line
zgrep "$var_wgr $var_loc$var_env/app*$var_date*" | awk -F":" '{print $5 "::" $7}' | awk -F"," '{print $1}' | sort | uniq | while read -r rid ; do
zgrep "$var_rid $var_loc$var_env/app*$date*";
done
EOF