当与awk结合使用时,用于在bash中的grep结果后提取n行的Unix命令不起作用
我正在尝试在一个时间段之间获取日志,我能够使用下面的命令成功地获取日志(尽管它给出了理想的结果) file.log当与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
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