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

Исходное сообщение
"Вопрос по grepу - в manе не понял"

Отправлено nojik , 14-Ноя-07 12:21 
В никсах начинающий чайник, так что не злитесь если вопрос лольный. :)

Как с помощью grep выдрать строку из файла с двумя(тремя,четырьмя...) условиями? Еще проще - как задать 2(3,4...) условия отбора с помощью grep. Нужны только те строки, которые удовлетворяли-бы сразу всем заданным условиям.

Я щас просто тупо несколько раз "grepлю" файл:

cat aaa.txt |grep xaxaxa > xaxaxa.txt
cat xaxaxa.txt |grep xexexe > xexexe.txt
....
....

Хотелость бы сразу одним условием - одной строкой


Содержание

Сообщения в этом обсуждении
"Вопрос по grepу - в manе не понял"
Отправлено glo_omy , 14-Ноя-07 14:05 
>[оверквотинг удален]
>только те строки, которые удовлетворяли-бы сразу всем заданным условиям.
>
>Я щас просто тупо несколько раз "grepлю" файл:
>
>cat aaa.txt |grep xaxaxa > xaxaxa.txt
>cat xaxaxa.txt |grep xexexe > xexexe.txt
>....
>....
>
>Хотелость бы сразу одним условием - одной строкой

cat исходный_файл| grep первое_условие | grep второе_условие| ....| grep n-ое_условие > конечный_файл


"Вопрос по grepу - в manе не понял"
Отправлено angra , 14-Ноя-07 14:35 
это был вариант когда все словия через логическое И
если нужно через ИЛИ
grep regex1\|regex2\|regex3 ну и так далее. При необходимости можно использовать еще \( и \) для группировки



"Вопрос по grepу - в manе не понял"
Отправлено Vladimir , 27-Фев-12 17:44 
> это был вариант когда все словия через логическое И
> если нужно через ИЛИ
> grep regex1\|regex2\|regex3 ну и так далее. При необходимости можно использовать
> еще \( и \) для группировки

В таком случае необходимо использовать ключ -E либо egrep (читайте man):
grep -E "regex1|regex2|regex3" (проверено - работает).


"Вопрос по grepу - в manе не понял"
Отправлено phpcoder , 14-Ноя-07 14:58 
>Как с помощью grep выдрать строку из файла с двумя(тремя,четырьмя...) условиями? Еще
>проще - как задать 2(3,4...) условия отбора с помощью grep. Нужны
>только те строки, которые удовлетворяли-бы сразу всем заданным условиям.

Можно использовать цепочку grep'ов, объединённых pipe'ом. Возможно также использовать regexp. Ну и ещё с помощью sed/awk можно.

>Хотелость бы сразу одним условием - одной строкой

grep xaxa aaa.txt | grep xexe | grep blabla



"Вопрос по grepу - в manе не понял"
Отправлено nojik , 14-Ноя-07 15:17 
Спасибо всем - реально помогли :)

"Вопрос по grepу - в manе не понял"
Отправлено miv , 03-Авг-11 17:16 
> Спасибо всем - реально помогли :)

Если нужно искать не по одному параметру, а по нескольким
grep 'usl1\|usl2' file