Ich habe eine Protokolldatei, die mehrere Zeilen enthält, jede mit einer IP, einem Benutzernamen und einer URL. Ich muss etwas erstellen, das jede IP in der Zeile annimmt und, wenn sie mit einer 10 beginnt, das Wort „ON“ an das Ende der Zeile anfügt, die sie enthält. An alle anderen Zeilen mit einer anderen IP, die nicht mit einer 10 beginnt, muss das Wort „OFF“ angehängt werden.
Beispiel einer Protokolldatei:
10.10.10.10 jsmith1234 [URL]
173.10.10.10 jsmith1234 [URL]
Beispiel für das, was ich möchte:
10.10.10.10 jsmith1234 [URL] ON
173.10.10.10 jsmith1234 [URL] OFF
Ich glaube, dass eine „if, then, else“-Anweisung funktionieren würde (verwendet in einem Bash-Shell-Skript), aber ich bin auf diesem Gebiet noch völlig neu und weiß nicht, wo ich anfangen soll.
Antwort1
Hast du etwas probiert? Kurzes Beispiel:
while read line; do
if [[ $line = \10.* ]] ; then
echo "$line ON"
else
echo "$line OFF"
fi
done
Infolge:
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
Antwort2
Ich habe das Problem selbst mit der folgenden Lösung gelöst:
sed '/^10.*:/ s/$/ ON/' test_file.txt
sed '/^10.*:/ s/$/ OFF/' test_file.txt
Antwort3
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