Я пытаюсь написать сценарий bash, чтобы проанализировать следующий файл журнала и дать мне список игроков CURRENT в комнате (поэтому игнорирование оставшихся игроков, включая игроков, которые, возможно, воссоединились) , Обратите внимание, что Самуэль вернулся.Разбор игроков в настоящее время в фойе
[Sun Nov 15 14:12:50 2009] [GAME: Tower Defense Join Fast!] player [Samual|192.168.1.115] joined the game
[Sun Nov 15 14:12:54 2009] [GAME: Tower Defense Join Fast!] deleting player [Samual]: has left the game voluntarily
[Sun Nov 15 14:12:57 2009] [GAME: Tower Defense Join Fast!] player [Jack|192.168.1.121] joined the game
[Sun Nov 15 14:13:04 2009] [GAME: Tower Defense Join Fast!] player [NoobLand|192.168.1.153] is trying to join the game but is banned by IP address
[Sun Nov 15 14:13:04 2009] [GAME: Tower Defense Join Fast!] [Local]: User [NoobLand] was banned on server [www.example.com] on 2009-11-04 by [Owner] because [].
[Sun Nov 15 14:13:13 2009] [GAME: Tower Defense Join Fast!] player [Jones|192.168.1.178] joined the game
[Sun Nov 15 14:13:21 2009] [GAME: Tower Defense Join Fast!] player [Arnold|192.168.1.126] joined the game
[Sun Nov 15 14:13:35 2009] [GAME: Tower Defense Join Fast!] [Local]: Autokicking player [Arnold] for excessive ping of 131.
[Sun Nov 15 14:13:35 2009] [GAME: Tower Defense Join Fast!] deleting player [Arnold]: was autokicked for excessive ping of 131
[Sun Nov 15 14:13:44 2009] [GAME: Tower Defense Join Fast!] [Lobby] [Jones]: !chekme
[Sun Nov 15 14:13:44 2009] [GAME: Tower Defense Join Fast!] non-spoofchecked user [Jones] sent command [chekme] with payload []
[Sun Nov 15 14:13:45 2009] [GAME: Tower Defense Join Fast!] [Local]: Waiting for 4 more players before the game will automatically start.
[Sun Nov 15 14:14:05 2009] [GAME: Tower Defense Join Fast!] player [Samual|192.168.1.116] joined the game
Чтобы дать мне список игроков, в настоящее время в комнате, как это (я, вероятно, может использовать тр для случая выключателя):
'jack','jones','samual'
Когда игрок присоединяется он будет говорить «игрок [Playername | PlayerIP] вступил в игру "(вы можете игнорировать IP Когда игрок покидает он будет говорить." удаление игрок [Playername]: Некоторые Reason
Хотя я знаю, как добраться до обоих этих списков индивидуально, мне нужно объединить их, чтобы как-то выяснить, кто все еще находится в комнате, и порядок важен, потому что они могут воссоединиться. Кто-нибудь может мне с этим помочь?
У меня есть эта SED заявление, чтобы дать мне игроков, которые присоединились:
sed -n 's/\[.*\] \[GAME: .*\] player \[\(.*\)|.*\] joined the game/\1/p`
и это, чтобы дать мне список выпускников:
sed -n 's/\[.*\] \[GAME: .*\] deleting player \[\(.*\)\].*/\1/p'
Но не знаю, как объединить два, или поставить галочки и запятые в список игроков.
С благодарностью
Perl будет работать, но у меня нет никакого опыта с ним так потребуется большая помощь. Текущая форма скрипта захватывает последние 1000 строк активного файла журнала, называемого ghost.log. Затем он находит самую последнюю игру, к которой присоединился «Владелец», и отфильтровывает ее только до списка элементов, связанных с этим именем. Затем мне нужен список игроков, которые сейчас играют в игре, чем я. Оттуда мне нужно запросить мою базу данных sqlite3, где список имен является одним из операторов «где». Должен ли я использовать perl для всего этого? Или вы хотите, чтобы bash вызывал отдельный скрипт perl для синтаксического анализа? Как мне это сделать? – Dan
Я смог прочитать большую часть этого. Я понимаю большую часть регулярного выражения тоже ... но что такое:? и:?. Почему средний паратезис не равен $ 2, а утверждение if истинно для строк, которые содержат это? Что представляют первые (/ и последние /)? – Dan
ОК, первая '?:' Является частью конструкции '(?: ...)'. Это кластеризация, а не захват. Это означает, что содержимое обрабатывается как целое, но не присваивается переменной '$ 2'. Причина этого в том, что нам все равно, что такое контент, но мы хотим, чтобы следующий знак '?' Работал на весь фрагмент. Когда вы помещаете '?' После группы или одного символа, это говорит о том, что группа или символ являются необязательными. Здесь мы используем его, чтобы сказать, что wn IP-адрес (вещь в конструкции '(?: ...)' может присутствовать или отсутствовать. Кроме того, ':?' Позже: двоеточие может присутствовать или не присутствовать. – Tim