0

我有一个错误日志文件,其内容为 -

2017/11/06 13:17:05 [notice] 18164#18164: signal process started
.
.
.

我有命令将提取日期和通知,警告消息

cat  whole_error.log | cut -d" " -f1,3,5-20 | sort -nr | grep "warn\|notice" | awk '$1 >= 2017/09/02 && $1 <= 2017/11/06' | awk '{print $1 " " $2" " $3}'

它完全工作正常,我得到了预期的输出但是,我想将开始日期和结束日期作为命令行参数输入,为此,我将脚本编写为 -

#!/bin/bash
file_name=$1
start_date=$2
end_date=$3


cat  $file_name | cut -d" " -f1,3,5-20 | sort -nr | grep "warn\|notice" | awk '$1 >= $start_date && $1 <= $end_date' | awk '{print $1 " " $2" " $3}'

但它没有返回任何东西。没有错误信息什么都没有..只是提示再次到来。如何解决这个..

4

1 回答 1

1

用于-v将 shell 变量传递给 awk:

#!/bin/bash

file_name=$1
start_date=$2
end_date=$3

<"$file_name" cut -d" " -f1,3,5-20 \
  | sort -nr \
  | awk -v start_date="$start_date" -v end_date="$end_date" \
      '/warn|notice/ && $1 >= start_date && $1 <= end_date {print $1 " " $2" " $3}'
于 2017-11-22T13:51:19.640 回答