当前位置:  开发笔记 > 编程语言 > 正文

awk在输出中打印一个额外的行{print $ x}

如何解决《awk在输出中打印一个额外的行{print$x}》经验,为你挑选了1个好方法。

我在答案中搜索没有成功......在RHEL Linux上,第一个命令列出了这一点(我完全按照我的方式为那些想要测试的人...):

ps -eaf | grep lsnr | grep -v ' LISTENER ' | grep -v grep
oracle   10258     1  0  2014 ?        01:34:43 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRXPLO -inherit
oracle   10442     1  0  2014 ?        00:24:30 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TECHIMIO -inherit
oracle   10473     1  0  2014 ?        00:28:50 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEIAC -inherit
oracle   10566     1  0  2014 ?        00:24:50 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEIMG -inherit
oracle   14192     1  0  2014 ?        00:22:09 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PROCTM2 -inherit
oracle   27167     1  0  2014 ?        00:19:26 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEOCTM -inherit
oracle   36854     1  0  2014 ?        00:19:59 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEANA -inherit
oracle   37235     1  0 May20 ?        00:08:32 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRCHIMIO -inherit
oracle   45141     1  0 Jun03 ?        00:08:02 /logicielST1/oracle/product/11.2.0.4/bin/tnslsnr PRIACS -inherit
oracle   48241     1  0 Sep25 ?        00:04:39 /logicielPR1/oracle/product/11.2.0.4/bin/tnslsnr PRINL -inherit
oracle   48708     1  0 Sep25 ?        00:03:27 /logicielTE1/oracle/product/11.2.0.4/bin/tnslsnr TEINL2 -inherit

我想提取UPPER名称(例如:第一行的PRXPLO),所以我这样做:

ps -eaf | grep lsnr | grep -v ' LISTENER ' | grep -v grep | awk -F "${ORA_LISTENER_HEADER}|${ORA_LISTENER_HEADER_UPPER}|tnslsnr " '{print $2}'
PRXPLO -inherit
TECHIMIO -inherit
TEIAC -inherit
TEIMG -inherit
PROCTM2 -inherit
TEOCTM -inherit
TEANA -inherit
PRCHIMIO -inherit
PRIACS -inherit
 {print $2}
PRINL -inherit
TEINL2 -inherit

*注意:在此命令中,"$ {ORA_LISTENER_HEADER} | $ {ORA_LISTENER_HEADER_UPPER} | tnslsnr"将等同于"tnslsnr"

显然,包含"{print $ 2}"的行不应该存在,但我找不到它的来源.我知道我可以通过grep简单地排除它,但我更愿意理解我做错了什么.

有人可以帮我解决这个问题吗?

谢谢大家.



1> glenn jackma..:

为了解决问题,只需使用一个awk调用:

ps -eaf | awk '/lsnr/ && !/ LISTENER / {print $(NF-1)}'

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有