Regex Linux逐行读取文件,打印正则表达式并打印两种模式之间的所有内容
我制作了这个脚本:Regex Linux逐行读取文件,打印正则表达式并打印两种模式之间的所有内容,regex,linux,awk,Regex,Linux,Awk,我制作了这个脚本: 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 Cor
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
我无法从康奈斯大学打印SE401
查询是在45个不同的服务器上进行的,如果不将SE04放在表之前,将无法理解哪些数据来自何处
尝试另一个循环,在另一个循环之前插入另一个awk
试着把两个awk放在一条线上
很可能我写错了什么,因为我对脚本所做的任何更改,控制台都像是在等待输入
你知道如何打印SE04吗?很难猜测你的问题主体和标题之间的关系。如果我理解正确,您希望打印第一行(
SE
后接数字)和数据库查询的输出
尝试:
awk
在这里所做的是打印以SE
、+
或|
开头的每一行。如果您需要其他内容,请编辑您的问题以使其易懂
您可能不想保留hc\U connesse的副本。在这种情况下,只需从上面的命令中删除字符串teeh_connesse
输出:
SE401
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
|num |nom |mdp |numpro|numcai|numcle |coffre|consig|datemodif |matcv |cre_hot |deb_ctrl |fin_ctrl |top_vi|
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
| some data here
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
+
在正则表达式中有特殊含义,您需要对其进行转义。没有以开头的行(
),您希望与匹配的是什么/^\(/
?awk'NR==1'文件
?@Barmar编辑了代码。缺少一个CR。我能够获取从表开始的+-----------+到表结束的+-----------+之间的所有内容。您确定在checkUserateur.sh
中运行的任何命令都没有选项只向您提供所需的输出吗nt,这样以后就不必使用其他工具(如awk)对其进行后期处理了吗?看起来您正在将stderr与stdout混合在一起,并且您运行的任何查询都可能有选项。感谢代码。我让它变得过于复杂了。它可以工作!awk'/^SE/|/^+/|/^/'
=awk'/^(SE.[+]/“
=grep-E'^(SE |[+|])”
和for
循环需要重写为,而IFS=read-ri;do echo“$i”;ssh“$i”/tmp/checkUsiateur.sh;done
则需要修复各种问题。有关更多信息,请参阅和。
SE401
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
|num |nom |mdp |numpro|numcai|numcle |coffre|consig|datemodif |matcv |cre_hot |deb_ctrl |fin_ctrl |top_vi|
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+
| some data here
+-------------+------------------------------+------+------+------+-------------+------+------+-------------------------+------+-------------------------+-------------------------+-------------------------+------+