Вчера по работе вылезла задачка: вытащить все IP-шники из архива samba’овских log-файлов. Как известно, адреса там могут находиться на разных позициях, поэтому вычислить их по позициям (awk “{print $4}”) не получится. Я начал искать регулярное выражение. Казалось бы, чего проще? Но почему-то различные варианты типа
sed 's/.*(([0-9]{1,3}\.){3}[0-9]{1,3}).*/\1/p'
не отрабатывало как надо: то выводили всё, то отрезали первые две цифры от адреса. Хотя вроде регэксп правильный, и онлайн-проверка показывала, что всё верно.
Решение нашлось на моём “настольном” сайте commandlinefu.com. Вот оно с небольшими модификациями:
cat log.smbd*bz2|bunzip2|egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|sort -u
В скрипте ошибка- последняя кавычка (перед трубой) неправильная 🙂
Это хитромудрый WordPress считает, что так красивше будет 🙁