Сортировка по регулярке!

Jovanni

Новичок
Здравствуйте! Помогите пожалуйста с сортировкой

есть файл вида:

PHP:
-A FORWARD -m mac --mac-source c8:3a:35:bd:03:5a -s 192.168.1 -j ACCEPT  #Go
-A FORWARD -m mac --mac-source c8:3a:35:bd:03:5a -s 192.168.1 -j ACCEPT  #G
-A FORWARD -s 192.168.1.12 -j ACCEPT  #W
-A FORWARD -s 192.168.1.13 -j ACCEPT  #W
-A FORWARD -s 192.168.1.169 -j ACCEPT  #Www
Как сделать сортировку по IP адресу.
что то никак нимогу сообразить как это сделать.
но знаю что нужно делать по регулярке.
Спасибо заранее
 

Hello

Новичок
Считать файл в массив
Пройтись по массиву функцией usort, которая будет регуляркой выбирать IP и принимать решение о сортировки
 

Andir

Новичок
При помощи функции file_get_contents считываете содержимое файла в строку, использую функцию preg_split в качестве первого параметра передаёте регулярное выражение /\d{1,3}\.\d{1,3}\.\d{1,3}/g, в качестве второго параметра передаёте строку, функция preg_split вернёт вам массив состоящий из подсрок заданной строки,которая разбита по границам, соответствующим шаблону.Полученный массив сортируете
http://manual.pohape.ru/#/ru/function.preg-split.html
 

dimitrius

Новичок
Смторя как ты хочешь сортировать - можно ип преобразовать в число и сортировать на здоровье, если по под сетям тогда другой вопрос.
 

Jovanni

Новичок
Сделал с помощю sort
PHP:
exec ("/bin/cat $forward |/bin/sed 's/.*\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b_//' | /usr/bin/sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 > tmpf");
Спасибо всем
 
Сверху