Нужна рука с grep + regex

Каждый из вас может хранить свои файлы конфигурации в разных каталогах.

/home/user1/.vimrc

/home/user2/.vimrc

Затем создайте псевдоним в root ~ / .bashrc, чтобы использовать разные конфигурации.

alias vi='vim -u  /home/user1/.vimrc'
alias vim='vim -u /home/user2/.vimrc'

Если у вас возникли проблемы с загрузкой плагинов, убедитесь, что ваши ссылки в ваших файлах .vimrc не используют $ HOME или ~ / для ссылки на какие-либо файлы, потому что когда root пытается их прочитать, он будет искать в / root / путь / к / файлу

2
27.04.2017, 13:20
3 ответа

Предполагая, что вам нужно ровно два y, а не минимум два ys, с GNU grep, если он собран с поддержкой PCRE:

grep -Pow '(?=\w*y\w*y)(?!\w*y\w*y\w*y)\w*ee\w*'

Или с ast-open grep (2014-01-26 или новее):

grep -Xow '\w*ee*\w*&\w*y\w*y\w*&(\w*y\w*y\w*y\w*)!'

Если вам также нужна хотя бы одна последовательность ровно два es (а не 3 или более), то есть, например, совпадает с eeyy или eeyyeee, но не с eeeyy), с GNU grep -P:

grep -Pow '(?=\w*y\w*y)(?!\w*y\w*y\w*y)\w*(?<!e)ee(?!e)\w*'
2
27.01.2020, 21:53

Просто вариант ответа Фокса:

grep -Po '\w*ee\w*'  words.txt | grep 'y.*y'

если вы хотите ровно 2 ys:

... | grep -v 'y.*y.*y' 
1
27.01.2020, 21:53

Я предполагаю, что ваш файл выглядит примерно так:

beeyy yeey open iee eey yeefy
funny reenydy jyyee

и называется words2.txt. Да, содержимое случайное. Это отобразит набор слов, содержащих последовательные eeи два yсимвола :

.
< words2.txt tr ' ' '\n' | grep 'ee' | grep 'y.*y'

Сначала это гарантирует, что каждое слово находится на отдельной строке с tr, затем grepдля двух последовательных e, затем снова grepдля двух (, возможно, не -последовательных )y. ]. Поскольку каждый grepявляется фильтром, конечным результатом является набор слов, содержащих как последовательные ee, так и два y.

На моем входе результат:

beeyy
yeey
yeefy
reenydy
jyyee
3
27.01.2020, 21:53

Теги

Похожие вопросы