Avaliação de linha em um arquivo

0

Eu tenho um arquivo de origem como este:

server1 Mitigated Vulnerable Mitigated
server2 Vulnerable Vulnerable Mitigated
server3 Mitigated Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated
server5 Mitigated Vulnerable Mitigated
server6 Vulnerable Vulnerable Vulnerable

Eu quero comparar o segundo e o quarto elemento de cada linha e adicionar um 5º elemento seguindo essa lógica:

Se um deles (segundo ou quarto elemento) diz vulnerável - o quinto elemento será vulnerável (e eu quero que seja impresso na mesma linha como:

server2 Vulnerable Vulnerable Mitigated Vulnerable

Se apenas os dois (2º e 4º) forem mitigados - Então o 5º elemento será mitigado

Você pode ignorar o terceiro elemento.

    
por Param 25.01.2018 / 13:42

2 respostas

1

Usando awk :

awk '$2 == "Vulnerable" || $4 == "Vulnerable" { $5 = "Vulnerable" } { print }' file

Resultado ao usá-lo nos dados do exemplo:

server1 Mitigated Vulnerable Mitigated
server2 Vulnerable Vulnerable Mitigated Vulnerable
server3 Mitigated Vulnerable Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated
server5 Mitigated Vulnerable Mitigated
server6 Vulnerable Vulnerable Vulnerable Vulnerable

O código awk examina os segundo e quarto campos, e se algum deles for exatamente a string Vulnerable , um quinto campo será introduzido. Todos os campos (de todas as linhas de entrada) são impressos.

    
por 25.01.2018 / 13:48
1

Awk solução:

Para ambas as condições:

  • If either one ( 2nd or 4th element ) says vulnerable - 5th element will be Vulnerable
  • If only both ( 2nd and 4th ) are mitigated - Then 5th element will be Mitigated
awk '$2$4 ~ /[vV]ulnerable/{ $5="Vulnerable" }
     $2 ~ /[mM]itigated/ && $2 == $4{ $5="Mitigated" }1' file

A saída:

server1 Mitigated Vulnerable Mitigated Mitigated
server2 Vulnerable Vulnerable Mitigated Vulnerable
server3 Mitigated Vulnerable Vulnerable Vulnerable
server4 Mitigated Vulnerable Mitigated Mitigated
server5 Mitigated Vulnerable Mitigated Mitigated
server6 Vulnerable Vulnerable Vulnerable Vulnerable
    
por 25.01.2018 / 14:02