当与awk结合使用时,用于在bash中的grep结果后提取n行的Unix命令不起作用

当与awk结合使用时,用于在bash中的grep结果后提取n行的Unix命令不起作用,bash,unix,awk,Bash,Unix,Awk,我正在尝试在一个时间段之间获取日志,我能够使用下面的命令成功地获取日志(尽管它给出了理想的结果) file.log 2016-08-10 13:53:35 org.apache.axis2.AxisFault:连接被拒绝 2016-08-10 13:53:36什么废话废话 cat file.log\ | grep "refused" \ | awk -F, \ -v b='`date --date="10 minutes ago" +"%F %T"`' \ -v

我正在尝试在一个时间段之间获取日志,我能够使用下面的命令成功地获取日志(尽管它给出了理想的结果)

file.log
2016-08-10 13:53:35 org.apache.axis2.AxisFault:连接被拒绝
2016-08-10 13:53:36什么废话废话

cat file.log\
  | grep "refused" \
  | awk -F, \
      -v b='`date --date="10 minutes ago" +"%F %T"`' \
      -v e='date +"%F %T"' \
      -v date="$(date +"%F %T")" \
      '{ if ($1 >= b && $1 <= e) print $0,date }'
cat file.log\
|格雷普“拒绝”\
|awk-F,\
-v b='`date--date=“10分钟前”+%F%T`'\
-v e='date+%F%T''\
-v date=“$(日期+%F%T”)”\
{如果($1>=b&&$1=b&&&$1试试:

awk\
-F\
-v b=“$(日期--日期”10分钟前)+%F%T”)
-v e=“$(日期+%F%T”)”'
/错误| WARNING/&($1”“$2)>=b&($1”“$2)0{print;--cnt}

“严格来说,是
grep-A3“错误”
没有按您的预期工作。并非所有
grep
s都支持
-A
选项。您使用的是什么操作系统?或者您可能需要
-A3
(无空格)?当然,你不需要
cat
,只要
grep stuff filename
也可以。祝你好运。你的问题应该包含一个简洁、可测试的示例输入和预期输出,这样我们就可以帮助你编写正确的脚本,而不是帮助你在错误的脚本上粘贴绷带。正如我提到的,只有在我将-A 3与grep一起使用,我没有得到所需的输出。@SHORDER-grep-A在我的操作系统(其linux)中受支持。您可以替换
cnt>0{print;--cnt}
cnt&&cnt--
@karakfa:为什么有人想让事情变得比现在更模糊?这并不复杂。这是一个可以学习的习语,@Matei:我不仅仅是在“错误”上变灰,我还有更多的模式要变灰。我正在使用类似于grep的“错误”\124;例外\更多”|awk…..cmd….
awk
语法将是
/ERROR | EXCEPTION |更多/
,而不仅仅是
/ERROR/
awk \
    -F, \
    -v b="$(date --date "10 mins ago" +"%F %T")"
    -v e="$(date  +"%F %T")" '
/ERROR|WARNING/ && ($1 " " $2)>=b && ($1 " " $2)<=e {print; cnt=5; next}
cnt>0 {print; --cnt}
' <filename