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