2015-01-21 4 views
0

Как искать строки в файлах в UNIX, которые начинаются с e или y и содержат ровно четыре символа в одной строке?Поиск шаблонов в файлах с помощью Unix

В первой части я попытался

ls /usr/cont | grep ^[ey] 

я не уверен, как я должен сделать это признать две разные буквы.

Для другой части я знаю только, как искать один точный символ.

Для второй части я использовал:

ls /usr/cont | grep ^.$ 
+0

Пожалуйста, приведите пример, какой результат вы ожидаете – Learner

+1

имен файлов или содержимое файла? 'grep' для содержимого,' find' для имен (или 'ls | grep' в зависимости от того, что вы хотите сделать) – John3136

+0

Im using ls | grep для поиска файлов в каталоге usr/cont. Не уверен, как объединить синтаксис. – gexcen

ответ

1

использовать этот шаблон:

grep "^[ey]...$" 

В качестве альтернативы, использовать синтаксис диапазона:

grep "^[ey].\\{3\\}$" 
+0

Спасибо, я знал, что первая часть имеет смысл, но не понимала, что вам нужно указать больше точек для диапазона. – gexcen

+0

Когда я получу репутацию 15, я обязательно буду :) – gexcen

+0

Извините, я думал, что смогу принять все ответы так логично, что согласился бы с первым. Я очень ценю ваш вклад. – gexcen

0

В качестве примера:

gps.log и pps.log

Я пробовал следующее и работает.

$ ls -ldtr [gp][a-z][a-z].* 

Вы можете добавить A-0-9, в диапазоне символов, а если ваши файлы имеют ГорбатыйРегистр или числовые символы в нем, как хорошо.

1

Для имен файлов:

ls /usr/cont/[ey]??? 

Имя файла должно начинаться с e или y и состоят из 4-х символов в общей сложности (плюс путь, конечно).

Для строк в файлах:

grep '^[ey]...$' 

Строка должна начинаться с e или y и состоит из 4-х символов в общей сложности.

0

Хотя я не получил ваш вопрос полностью и недостаточно очков репутации для комментариев. Если вы хотите, чтобы найти файл с именами файлов или начать с буквой «е» или «у» и имеете ровно четыре символа затем попытаться «найти»,

find /path_to_search_for -name "????" \(-name "y*" -o -name "e*" \) 
+0

Или 'find/path/to/search/for/name -name '[ey] ???''? –