У меня есть файл, который содержит следующее содержание.я хочу извлечь из него два поля, т.е. 1-е поле (2019-04-09T05: 25: 26) перед словом «Running» и 3-е поле (run_stat) перед «Running»
demo.log
"$id": "9",
"TaskExecId": 7917159,
"WorkflowExecId": 2560888,
"TaskId": 215537,
"TaskName": "run_stat", ------ 3rd field
"TaskTypeId": "Custom",
"StartDate": "2019-04-23T05:25:26", -- 1st field
"ExecStatusId": "Running",
"HasStep": 0.0,
"HasTaskExecLog": 0.0,
"HasTaskExecReport": 0.0
Я написал приведенный ниже скрипт, но он не работает.
#!/bin/bash
a=$( date "+%Y-%m-%d %H%M%S" )
b=`sed -n -e '/Running/{x;$!N;p;D;}' -e h demo.log| sed -e 's/ //g;N;s/\n/~/g;s/"//g;s/ //g;s/,//g;s/[a-z]//g;s/[A-Z]//g;s/_//g;s/://g;s/~0.0//g'`
c=$((a-b))
echo $a
echo $b
echo $c
Ожидаемое значение должно отображаться ниже:
run_stat
<current datetime> - 2019-04-23 05:25:26