Wenn-Dann-Sonst-Skripting

Wenn-Dann-Sonst-Skripting

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

verwandte Informationen