我正在使用带有变量的 awk 来根据时间戳剪切日志文件:
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ;
如果日期仍然存在于日志文件中,它可以工作,但如果日志文件已存档并替换为新文件,awk
则会失败。
cat $log_file
如果awk
失败,我想退回到:
LAST_LOG=$last_log awk 'index($0, ENVIRON["LAST_LOG"]) {y=1;next};y' $log_file ; \
|| cat $log_file
但是这个语法返回syntax error near unexpected token ||
.
上面的行不是我可以使用&&
或||
之后使用的正常功能吗?
问题
; ||
在;
结束调用,awk
下一个命令以 开头||
,这是一个语法错误。您要做的是
y
在解析日志文件结束时检查是否不是 1,在这种情况下 makeawk
返回非零退出状态:如果没有显式,您只会在发生某种错误时
exit
获得非零退出状态。awk
从评论中,我们清楚地看到了修复/调整 PO 命令的方法。遵循稍微不同的 gnu-Awk 方法:
$0 ~ L
可以更具体(例如$1 <= L
或$1 == L
)