【发布时间】:2020-05-22 12:10:00
【问题描述】:
我制作了这个脚本:
for i in `cat PDV_List`
do echo $i
ssh $i /tmp/checkutilisateur.sh
done > hc_connesse
awk '/^+-------------+/{PTN=1} /^\(/{PTN=0} PTN' hc_connesse
echo " "
hc_connesse 的输出是:
SE401
INGRES TERMINAL MONITOR Copyright 2011 Actian Corporation
Ingres Linux Version II 10.1.0 (a64.lnx/126)GPL login
Fri May 22 13:47:36 2020
Enter \g to execute commands, "help help\g" for help, \q to quit
continue
* Executing . . .
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
|num |nom |mdp |numpro|numcai|numcle |coffre|consig|datemodif |matcv |cre_hot |deb_ctrl |fin_ctrl |top_vi|
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
| some data here
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
(12 rows) continue
* Your SQL statement(s) have been committed.
Ingres Version II 10.1.0 (a64.lnx/126)GPL logout
Fri May 22 13:47:36 2020
我无法从 hc_connesse 打印 SE401。
查询是在 45 个不同的服务器上进行的,如果不将 SE04 放在表之前,将无法了解哪些数据来自哪里。
尝试了另一个循环,在另一个之前插入另一个 awk。
尝试将两个 awk 放在一条线上。
很可能我写错了什么,因为我对脚本所做的任何更改,控制台就像在等待输入。
您对如何打印 SE04 有任何想法吗?
【问题讨论】:
-
+在正则表达式中有特殊含义,需要转义。 -
没有以
(开头的行,您希望与/^\(/匹配什么? -
awk 'NR==1' file? -
@Barmar 编辑了代码。缺少 CR。而且我可以在开头的 +----------------+ 和表格末尾的 +-------------+ 之间获得所有内容.
-
您确定您在
checkutilisateur.sh中运行的任何命令都没有选项可以只为您提供所需的输出,因此您不必使用其他工具(如awk 稍后?看起来您将 stderr 与 stdout 混合在一起,并且您正在运行的任何查询都可能有选项。