Substituindo cat
que foi usado do terminal e com awk -F, -v MID="$machine_ID" -v MNR="$machine_number" '( $4 == MID ) && ( $5 == MNR ) && ( $7 == "status" ) {t=$10} END{print int(t/60)}' /home/ed/start_up_job/my_datum_file.csv
trabalhado.
Entendendo o código:
-
awk -F
define o separador de campo como,
-
-v
atribui um valor a uma variável de programa -
MID="$machine_ID"
em que asMID
é o nome da variável recém-fornecida emawk
para$machine_ID
, que é uma variável de shell -
-v MNR="$machine_number"
da mesma forma-v
reatribui uma variávelawk
chamada comoMNR
para uma variável shell chamada$machine_number
-
( $4 == MID )
iguala o parâmetro4
th com o queMID
detém -
&&
e -
( $5 == MNR )
iguala o parâmetro5
th com o queMNR
detém -
&&
e -
( $7 == "status" )
iguala o parâmetro7
th comstatus
-
{t=$10}
atribui o valor10
th at
-
END
é a regra que foi executada uma vez, depois que toda a entrada foi lida -
print int(t/60)
imprime a saída det/60
(note que não há sinal de $ na frente det
) comoint
eger -
/home/ed/start_up_job/my_datum_file.csv
do arquivo em ~
Essencialmente, no arquivo /home/ed/start_up_job/my_datum_file.csv
, esse código encontra os valores que contêm MID
e MNR
. Em seguida, o código coloca o valor do parâmetro [$] 10
th como t
e print
s como int
eger após /
ing 60