Если, то, иначе скрипты

Если, то, иначе скрипты

У меня есть файл журнала, содержащий несколько строк, каждая из которых содержит IP, имя пользователя и URL. Мне нужно создать что-то, что будет брать каждый IP в строке и, если он начинается с 10, добавлять слово "ON" в конец строки, содержащей его. Ко всем остальным строкам с любым другим IP, не начинающимся с 10, нужно будет добавлять слово "OFF".

Пример файла журнала:

10.10.10.10 jsmith1234 [URL] 
173.10.10.10 jsmith1234 [URL]

Пример того, что я хочу:

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

Я полагаю, что оператор if, then, else будет работать (используется в скрипте оболочки bash), но я новичок в этом деле и не знаю, с чего начать.

решение1

Вы что-нибудь пробовали? Короткий пример:

while read line; do
    if [[ $line = \10.* ]] ; then
        echo "$line ON"
    else
        echo "$line OFF"
    fi
done

Как результат:

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

решение2

Я решил эту проблему самостоятельно, используя следующее решение:

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

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

решение3

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

Связанный контент