我有一个错误日志文件,其内容为 -
uploadFromPc(files, parameters){
let headers = new Headers();
let formData = new FormData();
Array.from(files).forEach(file => formData.append('photo', file));
let options = new RequestOptions({ headers: headers });
//options.params = parameters;
return this.http.post(EnvVariables.apiEndpoint + 'wish/photo/upload', formData, options)
.subscribe(response => console.log(response))
}
我有命令会提取日期和通知,警告消息
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}'
但它没有返回任何东西。没有任何错误消息。只是提示再次到达。 如何解决这个问题..
答案 0 :(得分: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}'