Вы просто сможете изменить:
$5 = $4 - $5
на:
if ($4 != "Failed") { $5 = $3 - $4 }
Это будет:
- отказаться от изменения
$5
спустое до вычисленного значения в строках, где время окончания равно Failed
;и - правильно выполнит вычисление для всех остальных строк.
Я говорю правильно , поскольку, как представляется, вы хотите, чтобы время начала минус время окончания в этих случаях,несмотря на то, что длительность факта, как правило, является временем окончания минус время начала.Я изменил его, чтобы он соответствовал вашему желаемому результату, а не «вменяемому» ожиданию.
Ниже приведена расшифровка, чтобы вы могли увидеть ее в действии:
pax$ awk 'BEGIN{OFS="\t"}NR==1{$5="Time_diff"}NR>=2{if($4!="Failed"){$5=$3-$4}}1' <inputFile.txt |column -t
Done City Start_time End_time Time_diff
Yes Chicago 18 10 8
Yes Atlanta 208 11 197
No Minnetonka 57 Failed
Yes Hopkins 112 80 32
No Marietta 2018 Failed
И простокроме того, вы можете захотеть подумать, что произойдет, когда вы начнете получать информацию от New York
, San Antonio
, Salt Lake City
или, что еще хуже, Maccagno con Pino e Veddasca
: -)