У меня есть файл журнала, содержащий несколько строк, каждая из которых содержит 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