awk no solaris 5.8 / obter valor de dois campos / linhas

2

Sou novo no UNIX-Solaris, e consegui criar um script e estou tendo um problema com um valor que preciso.

Basicamente eu preciso detectar se dois processos estão sendo executados. Eu descubro que posso obter essa informação usando o seguinte comando

ps -fu "user" | grep -i "name_oftheprocess/file"

Quando eu o executei, recebo esta informação.

user   16544 16530   0 08:00:00 ?           0:08 /bin/bash /path/file

user   19098 16544   0 15:44:38 ?           0:00 /bin/bash /path/file

Então está tudo bem aqui. A única coisa é que eu tenho que comparar o 2º valor (16544) da linha 1, com o 3º valor (16544) da 2ª linha. Se eles coincidirem, então uma mensagem deve ser enviada informando que tudo está bem; se não, algo está errado.

Estou tentando descobrir como, com o awk, posso separar esses dois valores. Se eu usar

ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}' 

isso me dá o resultado

16544   19098  

(este último eu não preciso disso)

ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}' 

isso me dá o resultado

16530   16544  (this fist one I don't need it)

Então, quero que esses dois valores sejam armazenados em uma variável separada e, posteriormente, comparados com uma sentença if.

    
por cees09 21.02.2017 / 22:01

1 resposta

0

canalize as informações que você recebe neste AWK:

awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'

O comando completo no seu caso seria:

ps -fu "user" | grep -i "name_oftheprocess/file" | awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'

Nota:

Isso pode não ser robusto! Essa resposta usa o texto postado como entrada, se você fornecer mais detalhes sobre o que deseja fazer e incluir a saída do primeiro comando, talvez seja possível fazer outras considerações e encontrar uma solução mais apropriada.

    
por 21.09.2018 / 15:46

Tags