URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9185
[ Назад ]

Исходное сообщение
"Вопрос фильтрации строки. grep, sed, awk."

Отправлено max88 , 09-Июл-11 10:56 
Есть файл с адресами вида:
10.20.30.40:50
192.168.49.129:987
и т.д......
Точнее в файле гораздо больше всего, с помощью awk я вытаскиваю эти адреса.
Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только ip адрес, без порта и двоеточия, отбрасывать их. Ни как не получается. OS FreeBSD 8.1.

Содержание

Сообщения в этом обсуждении
"Вопрос фильтрации строки. grep, sed, awk."
Отправлено Aquarius , 09-Июл-11 11:05 
> Есть файл с адресами вида:
> 10.20.30.40:50
> 192.168.49.129:987
> и т.д......
> Точнее в файле гораздо больше всего, с помощью awk я вытаскиваю эти
> адреса.
> Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только
> ip адрес, без порта и двоеточия, отбрасывать их. Ни как не
> получается. OS FreeBSD 8.1.

ну, судя по всему, вы просто никак не пытались
sed 's#:.*##'
прекрасно справляется


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено max88 , 09-Июл-11 11:09 
>[оверквотинг удален]
>> 192.168.49.129:987
>> и т.д......
>> Точнее в файле гораздо больше всего, с помощью awk я вытаскиваю эти
>> адреса.
>> Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только
>> ip адрес, без порта и двоеточия, отбрасывать их. Ни как не
>> получается. OS FreeBSD 8.1.
> ну, судя по всему, вы просто никак не пытались
> sed 's#:.*##'
> прекрасно справляется

Пытался и не раз
вот крутил возле этого
grep '.*:' -o
но двоеточие отсавалось


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено Aquarius , 09-Июл-11 15:52 
>[оверквотинг удален]
>>> Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только
>>> ip адрес, без порта и двоеточия, отбрасывать их. Ни как не
>>> получается. OS FreeBSD 8.1.
>> ну, судя по всему, вы просто никак не пытались
>> sed 's#:.*##'
>> прекрасно справляется
> Пытался и не раз
> вот крутил возле этого
> grep '.*:' -o
> но двоеточие отсавалось

grep выводит или не выводит строки, в зависимости от их соответствия маске
эта попытка не считается
засчитываем только попытки, подразумевающие чтение и (хотя бы, частичное) понимание документации


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено Aquarius , 11-Июл-11 18:09 
>[оверквотинг удален]
>>> ну, судя по всему, вы просто никак не пытались
>>> sed 's#:.*##'
>>> прекрасно справляется
>> Пытался и не раз
>> вот крутил возле этого
>> grep '.*:' -o
>> но двоеточие отсавалось
> grep выводит или не выводит строки, в зависимости от их соответствия маске
> эта попытка не считается
> засчитываем только попытки, подразумевающие чтение и (хотя бы, частичное) понимание документации

пардон, прошу прощения!
попытка не так уж плоха, не прочитал про опцию -o
и стала бы победой в таком:
grep '^[^:]+' -o
или таком:
grep '^[^:]*' -o
виде


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено max88 , 09-Июл-11 11:11 
>[оверквотинг удален]
>> 192.168.49.129:987
>> и т.д......
>> Точнее в файле гораздо больше всего, с помощью awk я вытаскиваю эти
>> адреса.
>> Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только
>> ip адрес, без порта и двоеточия, отбрасывать их. Ни как не
>> получается. OS FreeBSD 8.1.
> ну, судя по всему, вы просто никак не пытались
> sed 's#:.*##'
> прекрасно справляется

Да, действительно получается! Спасибо большое!


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено awk_noob , 11-Июл-11 10:27 
>> ну, судя по всему, вы просто никак не пытались

sed -e 's/:.*$//' ip.txt
cut -d : -f 1 ip.txt
awk -F":" '{print $1}' ip.txt

cat ip.txt
192.168.23.23:50
10.10.10.10:34

и еще наверняка с десяток способов.


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено awk_noob , 11-Июл-11 10:47 
> и еще наверняка с десяток способов.

в регулярках не силен
grep "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" -o ip.txt

ну и специальный греп  именно для айпи адресов
http://www.ashep.org/2011/pyat-grep-podobnyx-programm/


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено Aquarius , 11-Июл-11 18:11 
>>> ну, судя по всему, вы просто никак не пытались
> sed -e 's/:.*$//' ip.txt
> cut -d : -f 1 ip.txt
> awk -F":" '{print $1}' ip.txt
> cat ip.txt
> 192.168.23.23:50
> 10.10.10.10:34
> и еще наверняка с десяток способов.

первая строка здесь - эквивалент моей за исключением $


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено alexroot , 10-Ноя-11 13:19 
> Есть файл с адресами вида:
> 10.20.30.40:50
> 192.168.49.129:987
> и т.д......
> Точнее в файле гораздо больше всего, с помощью awk я вытаскиваю эти
> адреса.
> Мне необходимо с помощью какой либо утилиты (grep, sed, awk....) выводить только
> ip адрес, без порта и двоеточия, отбрасывать их. Ни как не
> получается. OS FreeBSD 8.1.

я выважу тока айпишнеги вот так

cat /var/log/auth.log |grep "Failed password" |egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}' |sort |uniq


"Вопрос фильтрации строки. grep, sed, awk."
Отправлено Саша , 14-Фев-13 19:46 
cat file | sed "s/:.*//"