2016-04-04 3 views
1

Ниже строки Я пытаюсь вычленить информацию этого в Баш оболочки:Как grep для этой строки, которая содержит знак равенства?

'#Hostname=sometext.company.com, sometext.company.com' filename 

Я хочу найти только строку, если она совпадает с точным рисунком. Я уже пробовал команду ниже и несколько других.

grep -Fx "#Hostname=sometext.company.com, sometext.company.com" filename

+0

Вы проверили, есть ли у вашей целевой линии ведущие/конечные пробелы? поскольку у вас есть '-x', grep соответствует всей строке. – Kent

+0

Почему вы думаете, что '=' играет какую-то роль в этой работе или нет? Можете ли вы показать ** точный ** ввод и ** точную ** команду, которую вы используете, и то, что вы получаете как вывод? Можете ли вы совместить ** любые ** строки в файле в настоящее время? У вашего файла есть окончания строки DOS? –

ответ

0

ли вы указали -x опцию на цели?

grep -F '#Hostname=sometext.company.com, sometext.company.com' filename 

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

+1

Действительно ли '-F' необходимо? В матче нет нескольких фиксированных строк, разделенных * новыми строками *. Он будет работать так же хорошо, как и '-F'. –

+0

Я хотел, чтобы параметр '-x' соответствовал используемым точным словам. –

+0

@ DavidC.Rankin Исторически сложилось так, что '-F' подавлял' grep'into, ведя себя как 'fgrep', который понимал только фиксированные строки (без регулярных выражений) и поэтому мог быть реализован с помощью более упрощенного и более быстрого алгоритма сопоставления шаблонов. Сегодня вопрос, вероятно, спорный; в некоторой системе, 'fgrep',' egrep'etc. являются символическими связями с одним и тем же «grep'executable», и различия в скорости выполнения, вероятно, уже не значительны для многих приложений с сегодняшним оборудованием. – Guido

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