2009-10-04 3 views
1

Я пытаюсь использовать Grep, чтобы соответствовать такому случаю:Grep с «половинами» -точным матчем

У меня есть список имени хоста и изобр в следующем формате:

238-456 192.168.1.1 
ak238-456 192.168.1.2 
238-456a 192.168.1.3 
458-862 192.168.1.4 

Теперь я пытаюсь Grep "238-456", но, конечно, это возвращает:

238-456 192.168.1.1 

и ...

ak238-456 192.168.1.2 

и ...

238-456a 192.168.1.1 

, но мне нужно только строку с точно 238-456. В этом случае я не могу использовать -x, потому что тогда, конечно, он не возвращает никаких результатов.

Есть ли простой способ решить эту проблему?

Данные ответы с "^" решают первую проблему. Но не тот, у кого «а» в конце. Может ли somenone также помочь с этим?

ответ

5

В этом конкретном примере вы можете найти ^238-456, который соответствует только тогда, когда нужный текст появляется в начале строки. Для более общего решения узнайте о регулярных выражениях (из которых это пример).

редактировать:

Для вашей новой проблемы, вы просто могли бы включать пробел вручную путем поиска "^238-456 ". Существуют также некоторые классы символов регулярного выражения для пробелов. "^238-456\>" должен работать здесь. \> указывает границу слова, и вам, вероятно, нужно включить кавычки. Другая граница слова - \<, поэтому вы можете изменить все это на "\<238-456\>", и это приведет к удалению зависимости от того, находится ли она в начале строки.

+0

спасибо. работает как шарм. но теперь я нашел записи с «а» в конце. есть ли решение для этого? Я отредактировал мой вопрос. – fwaechter

+0

Хорошо, обновлено с помощью меток на границе слова. – kwatford

+0

работает отлично. спасибо за ваше время и помощь :) – fwaechter

0

Вы можете использовать регулярные выражения:

egrep "^238-456" 

должен делать, с просьбой проверить с начала строки.

Пример учебника для этого регулярного выражения можно найти here.

Смежные вопросы