Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Grep  (Прочитано 3359 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн berkutstar

  • Автор темы
  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Grep
« : 01 Декабря 2008, 22:23:29 »
Здравствуйте!
Изучаю сейчас книгу Владислава Маслакова "Linux" в ней есть глава "Введение в регулярные выражения" вот здесь то я и не понял как работает программа grep? если можно объяснить ее работу как то попроще, то прошу вас помочь мне иначе застопорился и не могу двигаться дальше. Понимаю что данная программа ищет в определенном файле те символы которые заданы, но не могу понять как данная программа запускается и как она работает.
Спасибо.

Оффлайн Alie Alexandross

  • Старожил
  • *
  • Сообщений: 1576
    • Просмотр профиля
Re: Grep
« Ответ #1 : 01 Декабря 2008, 23:44:15 »
Не являясь гуру в шелл, всё-же оставлю тут свои "5 коп."

grep, наверное, можно сравнить с поиском в текстовом документе. Если cat выводит на терминал содержимое файла, то grep фильтрует его.
Для примера выведем в терминал частоту процессора:
cat /proc/cpuinfoВыведет нам полную таблицу данных процессора. Но нам нужно конкретное поле, а не 200 строк, потому фильтруем результат grep -ом:
cat /proc/cpuinfo | grep MHzТеперь терминал выведет не весь текст, а только строки, в которых упоминается MHz
alie@0_о:~$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 2405.432
cpu MHz         : 2405.432
cpu MHz         : 2405.432
cpu MHz         : 2405.432
Процессор у меня 4 -ядерный, потому в результате я получила 4 строки с указанной частотой.

Второй вариант - посчитать количество строк не выводя их в терминал. За такое условие отвечает опция -c или --count
cat /proc/cpuinfo | grep -c MHzВ ответ получаем:
alie@0_о:~$ cat /proc/cpuinfo | grep -c MHz
4
cat прочитал знакомый файл, grep -c подсчитал количество упоминаний MHz в файле и вывел результат.

Третий вариант - использование grep в "чистом виде":
Поиск  строки в файле:
1 grep 'your_string' /your_dir/your_file
2 grep -c 'your_string' /your_dir/your_file
3 grep 'your_string' /your_dir/your_file | grep -v 'unwanted_string'
1. Поиск строк в файле и вывод в терминал
2. Подсчёт количества совпадений
3. Вывести совпадающие строки за исключением unwanted_string

Применение в скрипте:
#!/bin/bash
_VAR=$(cat /proc/cpuinfo | grep -c MHz)
echo "You have $_VAR kernels"
Во второй строке мы назначаем переменную, в третей - выводим результат.

Если мои 5коп. всё-же внесли некоторую ясность в вопрос - буду считать задачу выполненной ))
« Последнее редактирование: 02 Декабря 2008, 02:37:53 от Alie Alexandross »
Подпись автора jillsmitt истинна...

Оффлайн tolstyj

  • Участник
  • *
  • Сообщений: 186
    • Просмотр профиля
Re: Grep
« Ответ #2 : 02 Декабря 2008, 01:27:03 »
Понимаю что данная программа ищет в определенном файле те символы которые заданы, но не могу понять как данная программа запускается и как она работает.

В таких случаях очень сильно помогает справка man grep

Для любой комманды пробуй
man [i]имя_команды[/i]
Это один из универсальных советов. Всеравно ты не сможешь запомнить все комманды и все параметры для них, поэтому такой справкой приходится пользоваться часто.

Еще есть хорошее руководство по баш http://gazette.linux.ru.net/rus/articles/abs-guide/index.html

grep описан в разделе "12.4. Команды обработки текста"
Это руководство хорошо тем, что там есть примеры скриптов.

Оффлайн berkutstar

  • Автор темы
  • Новичок
  • *
  • Сообщений: 41
    • Просмотр профиля
Re: Grep
« Ответ #3 : 02 Декабря 2008, 09:46:51 »
Здравствуйте !
Огромное спасибо всем кто откликнулся на просьбу о помощи.
Особая благодарность Alie Alexandross

 

Страница сгенерирована за 0.02 секунд. Запросов: 20.