2016-10-08 1 views

ответ

-1

Какой результат вы хотите?

cat filename |grep "James" 

не может удовлетворить ваши требования?

+0

Спасибо за ваш ответ. Вышеприведенное является лишь примером. Что делать, если я просто хочу grep в конкретной области? –

+0

Это не соответствует неявному требованию, что если 'Джеймс' встречается в другом поле, то это событие должно быть ** не ** найдено и сообщаться. (Если это требование не было понято, не было бы упоминания о поиске в четвертом поле конкретно.) – Kaz

+0

Также 'cat file | grep pattern -> файл шаблона grep'. – Kaz

3

Как вы можете это сделать, гарантируя, что ваше регулярное выражение требует трех запятых, которые должны произойти перед основным шаблоном, и что шаблон (который должен сканировать в пределах поля) сам по себе не соответствует запятым, что приведет к его совпадению в пятом или позже поле:

grep -E '^([^,]*,){3}[^,]*James' 

«матч с самого начала линии три повторения нулевой или-более без запятых следует запятая, что возвращает нас к четвертому поле в четвертом поле.. , совпадение ноль или более не запятыми, а затем James. "

+0

Что, 'awk', это,' awk' ... :) –

-1
grep -P --color '(?<=,)James(?= +)' file 
31,32,19,**James** Walker,321,James 
grep -oP '(?<=,)James(?= +)' file 
James 
-1

Спасибо, ребята! Я завершаю операцию до cut файла, чтобы извлечь поле, которое я хочу, а затем grep строку, которую я хочу. FYI:

cut -d -f4 name.csv | grep 'James" 
Смежные вопросы