vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
Немного уточню Логическое OR в grep Логическое AND в grep для 2-х символов Логическое AND в grep для 3-х символов PS ... EDIT - забыл добавить AND для 2-х символов. И луше использовать egrep (или grep -E).В принципе для grep AND нет - это просто иммитация.
Ошибки не исчезают с опытом - они просто умнеют
|
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
vasek, echo 'bca' | egrep 'a.*b*c' не работает echo 'bca' | grep 'a' | grep 'b' | grep 'c' работает
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
nafanja, не понял, что ты имеешь ввиду. Привожу свои выводы .......... я привел иммитацию AND ...... оба варианта работают и выводы совпадают cat ~/test grep 'a' ~/test | grep 'b' | grep 'c' egrep 'a.*b*c' ~/test
Ошибки не исчезают с опытом - они просто умнеют
|
Absalon |
|
Темы:
13
Сообщения:
119
Участник с: 14 июля 2017
|
vasek grayich Если будет не а уже не найдет
|
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
AbsalonВерно подметил. Всегда подходит этот вариант - grep 'a' ~/test | grep 'b' | grep 'c' А вот этот вариант egrep 'a.*b*c' ~/test иммитирует AND, но пользоваться им нужно очень осторожно - зависит от того, что стоит на 1-ом месте и что конкретно нужно .... и лучше, конечно, его не использовать. PS ... а если нужен произвольный вариант, то тогда такая конструкция (совмещение OR и AND) - egrep 'a.*b*c|b.a*c|c.a*b' ~/test - вроде подходит - но мне больше нравится 1-ый вариант - grep 'a' ~/test | grep 'b' | grep 'c'
Ошибки не исчезают с опытом - они просто умнеют
|
Absalon |
|
Темы:
13
Сообщения:
119
Участник с: 14 июля 2017
|
vasekДа проще без грепа, по моему |
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
AbsalonЭто дело вкуса - каждая задача имеет несколько вариантов решений.
Ошибки не исчезают с опытом - они просто умнеют
|
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
Поигрался, меняя порядок букв и, как мне кажется, все ниже перечисленные команды дают одинаковый вывод, или у меня уже голова не варит egrep 'a.*b*c' ~/test egrep 'a.*b*c|b.a*c|c.a*b' ~/test egrep 'a.*b*c|a.c*b|b.a*c|b.c*a|c.a*b|c.b*a' ~/test в том числе и эта с awk awk '/a.*b*c/' ~/test
Ошибки не исчезают с опытом - они просто умнеют
|
Absalon |
|
Темы:
13
Сообщения:
119
Участник с: 14 июля 2017
|
https://pastebin.com/c3KVF5Rj |
vasek |
|
Темы:
48
Сообщения:
11340
Участник с: 17 февраля 2013
|
У меня такой комбинации (типа aac) не было. И получается, как и писал, команда grep 'a' ~/test | grep 'b' | grep 'c' работает всегда. PS ... EDIT1 - не прав, есть и другие комбинации ....... и выходит, что лучше этой командой не пользоваться - не надежно. И как все указали - остается одна, как наиболее надежная (конечно, можно капать и дальше, но, думаю, надежды нет) EDIT2 ... забыл главное - всем спасибо - потренировал свои застоявшиеся мозги
Ошибки не исчезают с опытом - они просто умнеют
|