Linux下使用使用管道时多个参数的问题的解决方案

来源:互联网 发布:第六次网络机器人大战 编辑:程序博客网 时间:2024/06/07 08:23

今天做项目时,遇到了一个问题,就是如何在linux命令下使用管道,简单的管道大家肯定都会,就像这种形式

<span style="font-size:18px;">ls -a | grep *test</span>

今天遇到的问题有点复杂,就是实时扫描系统日志,从上次扫描后的一行之后一直到文件结尾,匹配关键字,如果匹配则报警。我采用awk配合grep命令来实现

awk命令作为选取日志段输出作为grep命令的输入

awk 'NR>= beginLineNum&& NR<endLineNum logFileName  | grep -nE  pattern ;

但是如何取到当前日志的总行数就成为了问题,取总行数的命令为

wc -l logFileName

但是wc之后的结果是要放在恩德LineNum这个位置的,用|方式是实现不了的,经过查询之后,发现可以使用``符号来实现(`符号是键盘上esc键下边的那个键)

所以实现的方式是

awk 'NR>= beginLineNum&& NR<`wc -l logfileName` logFileName  | grep -nE  pattern ;
在linux执行命令时,会首先执行``内的命令,之后在去执行其他命令,并将``内的命令的返回值作为标准输入,输入到外边的这个命令中。

0 0
原创粉丝点击