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