Игры с регулярными выражениями и grep

Июнь 20, 2008

Есть директория mei с 5-ю файлами и одной поддиректорией:

sasha@zenon2:~/Documents/papers$ ls -l mei
total 2860
-rw------- 1 sasha sasha  265621 2006-12-04 15:39 article-12-2004-5.pdf
-rw------- 1 sasha sasha  505856 2005-09-14 14:11 control2005_3.doc
drwxr-xr-x 3 sasha sasha    4096 2008-06-20 23:17 diss
-rw------- 1 sasha sasha  690688 2004-05-27 13:48 exponenta.doc
-rw------- 1 sasha sasha 1084416 2005-06-01 15:20 ivanovo.doc
-rw------- 1 sasha sasha  351216 2006-12-11 11:38 teploen_2006_06.pdf

Надо подсчитать число файлов. Пробуем «начинается на что угодно, кроме d (directory)»:

sasha@zenon2:~/Documents/papers$ ls -l mei | grep -c ^[^d]
6

Лишку, т.к. посчитал и строку «total 2860″. Пробуем кроме «d» или «t»

sasha@zenon2:~/Documents/papers$ ls -l mei | grep -c ^[^dt]
5

Правильно, но лучше, начинается только с «-»:

sasha@zenon2:~/Documents/papers$ ls -l mei | grep -c ^[-]
5

Теперь, есть текстовый файл public.txt со списком статей (каждая начинается с * и номера):

sasha@zenon2:~/Documents/papers$ grep  ^*[0-9] public.txt
*12. Технологии искусственного интеллекта в задачах диагностики
*10. Технологии искусственного интеллекта в задачах диагностики
*9. Модифицированный генетический алгоритм для задач оптимизации и
*8?. Диагностика информационных подсистем АСУТП с использованием
*7. К вопросу о параметрической оптимизации алгоритмов управления и
*20. Диагностика информационных подсистем АСУТП с использованием
sasha@zenon2:~/Documents/papers$

Номер 8 помечен «?», т.к. для него приведена мертвая ссылка. Для остальных скачены файлы (в директории mei). Надо проверить совпадение числа файлов (5) числу ссылок в public.txt (кроме помеченной «?»). Начинается с «*», затем идет цифра, затем все (цифра или точка), кроме «?»:

sasha@zenon2:~/Documents/papers$ grep  ^*[0-9][^?] public.txt
*12. Технологии искусственного интеллекта в задачах диагностики
*10. Технологии искусственного интеллекта в задачах диагностики
*9. Модифицированный генетический алгоритм для задач оптимизации и
*7. К вопросу о параметрической оптимизации алгоритмов управления и
*20. Диагностика информационных подсистем АСУТП с использованием
sasha@zenon2:~/Documents/papers$ grep -c ^*[0-9][^?] public.txt
5

Славненько.