Se, Então, Else Script

Se, Então, Else Script

Eu tenho um arquivo de log que contém várias linhas, cada uma com IP, nome de usuário e URL. Preciso criar algo que pegue cada IP da linha e, se começar com 10, acrescentará a palavra "ON" ao final da linha que o contém. Todas as outras linhas com qualquer outro IP que não comece com 10 precisarão ter a palavra "OFF" anexada a ela.

Exemplo de arquivo de log:

10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

Exemplo do que eu quero:

10.10.10.10 jsmith1234 [URL] ON
173.10.10.10 jsmith1234 [URL] OFF

Acredito que uma instrução if, then, else funcionaria (usada em um script shell bash), mas sou muito novo nisso e não sei por onde começar.

Responder1

Você tentou alguma coisa? pequeno exemplo:

while read line; do
    if [[ $line = \10.* ]] ; then
        echo "$line ON"
    else
        echo "$line OFF"
    fi
done

Como resultado:

user@:~$ cat testo.txt 
10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

user@:~$ bash testo.sh < testo.txt 
10.10.10.10 jsmith1234 [URL] ON
173.10.10.10 jsmith1234 [URL] OFF

Responder2

Eu mesmo resolvi o problema usando a seguinte solução:

sed '/^10.*:/ s/$/ ON/' test_file.txt

sed '/^10.*:/ s/$/ OFF/' test_file.txt

Responder3

cat logfile | while read line
do
  echo ${line} | grep ^"10\." >/dev/null; r=${?}
  if [ ${r} -eq 0 ]
  then
    line=${line}" ON"
  else
    line=${line}" OFF"
  fi
echo ${line}
done > new_logfile

informação relacionada