Si, entonces, si no, secuencias de comandos

Si, entonces, si no, secuencias de comandos

Tengo un archivo de registro que contiene varias líneas, cada una con una IP, nombre de usuario y URL. Necesito crear algo que tome cada IP en la línea y, si comienza con 10, agregaré la palabra "ON" al final de la línea que la contiene. Todas las demás líneas con cualquier otra IP que no comience con 10 deberán tener la palabra "OFF" adjunta.

Ejemplo de archivo de registro:

10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

Ejemplo de lo que quiero:

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

Creo que una declaración if, then, else funcionaría (usada en un script de shell bash), pero soy muy nuevo en esto y no estoy seguro de por dónde empezar.

Respuesta1

¿Intentaste algo? breve ejemplo:

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

Respuesta2

Resolví el problema yo mismo usando la siguiente solución:

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

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

Respuesta3

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

información relacionada