【发布时间】:2017-08-23 12:55:11
【问题描述】:
我正在使用命令从日志文件中提取日志,当我通过终端运行该命令时该命令起作用
awk '/Aug 19/||/Aug 21/{a++}a; a==4{a=0}' daily_usage_report.log
这个命令给了我从 8 月 19 日到 8 月 21 日的数据。日志文件如下所示 -
Aug 19
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 19
Aug 20
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 20
Aug 21
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Aug 21
但是当我尝试在 shell 脚本中使用相同的命令并希望将 shell 变量传递给 awk 时,它不提供任何输出。我写的shell脚本是-
#!/usr/bin/bash
echo "Please enter the Full Date [eg- Aug 2 or Aug 20]"
read -p 'From Date: ' d1var
read -p 'Till Date: ' d2var
awk -v var="$d1var" -v vari="$d2var" '/"$var"/||/"$vari" /{a++}a; a==4{a=0}' daily_usage_report.log
exit
运行此脚本不会为我提供任何输出。
请帮助纠正我的错误。
【问题讨论】:
-
将您的代码粘贴到shellcheck.net 并解决那里标记的问题,然后请更新您的 Q。祝你好运。
-
更正了语法但仍然没有输出
-
这可以说是 How to use a variable as regex in awk 的副本。当然,那里的问题已经假设了最大的缺失部分(
~运算符)。