2017-02-03 9 views
-1

У меня есть входной файлкак Grep следующий

RAKESH_ONE  
RAKESH-TWO 
RAKESH123 
RAKESHTHREE 
/RAKESH/ 
FIVERAKESH 
456RAKESH 
WELCOME123 
This is RAKESH 

Я хотел бы получить выход

RAKESH_ONE 
RAKESH-TWO 
/RAKESH/ 
This is RAKESH 

Я хочу, чтобы напечатать строку, соответствующую шаблону RAKESH. Если шаблон имеет префикс или суффикс с буквенно-цифровым, мы должны его избегать.

+0

Какие варианты вы пытались выполнить? – Inian

+0

Я стараюсь как grep -v '[0-9a-zA-Z] RAKESH', который работает для префиксов, но также печатает не соответствующие шаблонные линии, также как WELCOME123 –

+0

grep -w "RAKESH" , это исключает '_' также, но я также хочу строки с _ как RAKESH_ONE –

ответ

3
([^a-zA-Z0-9]+|^)RAKESH([^a-zA-Z0-9]+|$) 

Это будет соответствовать шаблонам на линиях без буквенно-цифровых префиксов или суффиксов. Он не будет соответствовать всей линии , но если используется с grep или sed, вы можете вывести только нужные строки.

UPDATE

В соответствии с просьбой, вот полный grep команду. Используйте опцию -E для использования расширенного регулярного выражения:

grep -E "([^a-zA-Z0-9]+|^)RAKESH([^a-zA-Z0-9]+|$)" file.txt 
+0

Я вижу неправильную ошибку имени переменной, когда я использовал grep –

+0

, можете ли вы дать команду grep? –