2015-09-09 3 views
1

У меня есть переменная, установленная на определенное число, т. Е. Num = 56 и файл, полный чисел и других строк. Я хотел бы сопоставить как число, так и часть строки и получить всю содержащую их строку.Получите всю строку из файла, который содержит число и строку

Например,

Я хочу, чтобы соответствовать это мой номер: $ Num [мегабит] в файле полного подобных линий, таких как ниже.

random text in front - this is my number: 56 [mbits] 
random text in front - this is my number: 21 [mbits] 
random text in front - this is my number: 15 [mbits] 
random text in front - this is my number: 38 [mbits] 
random text in front - this is my number: 49 [mbits] 
random text in front - this is my number: 10 [mbits] 
random text in front - this is my number: 89 [mbits] 

Я использую приведенную ниже команду, но она не работает, когда я включаю всю строку.

Grep -n "это мой номер: $ Num [мегабит]" info.log >> info1.log

файл остается пустым.

Он работает только как grep -n "это мой номер:" info.log >> info1.log, и я получаю все строки, как указано выше. Мне просто нужен номер с конкретным номером.

Нужный выход должен быть,

случайный текст перед - это мой номер: 56 [мегабит]

Любая помощь?

Заранее спасибо.

ответ

2

Вы должны использовать grep -F (фиксированный матч строки):

num=56 
grep -F "this is my number: $num [mbits]" info.log 

Или еще:

grep "this is my number: $num \[mbits\]" info.log 

Как [ и ] являются специальные регулярные выражения символов, чем нужно экранировать.

Выход:

random text in front - this is my number: 56 [mbits] 
+0

Спасибо за ответ так быстро, как-то работает, но мне нужно лечить $ Num как переменные. Что-то пошло не так из-за двойных кавычек ... как распечатать значение переменной? – croussou

+1

Я получил это отсортировано сейчас, спасибо снова. – croussou

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