"фильтрует" строки - оставляя только "подходящие" под шаблон
egrep шаблон [ file ... ]
В шаблон могут входить обыкновенные символы (представляющие
сами себя), а также - спецсимволы, выполняющие служебные
функции шаблона: . * ^ $ [ ]
. - любой произвольный символ
* - "множитель" (предыдущий символ любое число раз)
.* - любая последовательность символов
^шаблон - привязываем шаблон к началу строки
шаблон$ - привязываем шаблон к концу строки
[символы] - любой один символ из тех, что стоят в скобках
Вывести всех привелигированных пользователей:
egrep ':0:0:' /etc/passwd
Вывести всех непривелигированных пользователей:
egrep -v ':0:0:' /etc/passwd
Вывести всех пользователей, имена которых начинаются с букв
a,b,e,d
cat /etc/passwd | grep "^[abed].*"
find рекурсивно обходит указанные каталоги и файлы, проверяет
для них выполнение указанных условий и может вдобавок выпол-
нять с найденными файлами указанные действия. Например, самое
простое действие - распечатать имя файла.
find файл [ ... ] ключи/условия/действия
Ключи-условия команды find:
-name "*.c" - простое имя подходит под шаблон *.c
-type f - брать только обыкновенные файлы
-type d - брать только каталоги
-size +500 - файлы размером БОЛЬШЕ 500*512 байт
-mtime -3 - дата модификации МЕНЬШЕ 3-х дней
-newer filename - дата модификации нашего файла МЕНЬШЕ, чем у
заданного файла filename
ВНИМАНИЕ: Команда find использует стандартные SHELL'овские
шаблоны. Команда grep использует шаблоны другого формата,
называемые регулярными выражениями.
Ключи-действия команды find
-print - просто распечатать маршрутное имя файла
-exec команда над файлом {} \;
Пример.
Напечатать имена всех обыкновенных Си-шных файлов, изменившихся
за последние 4 дня в текущем каталоге и его подкаталогах.
find . -type f -mtime -4 -print
Уничтожить все файлы с окончаниями *.bu, *%, которые не меня-
лись больше месяца.
find / \( -name "*.bu" -o -name "*%" \) -type f \
-atime +30 -exec echo rm {} \;
запись "echo rm {} \;" - обозначает команду Unix, которая будет выполняться
для всех таких найденных файлов. Вместо значка "{}" будет подставляться имя
найденного файла. Естественно, что таким образом мы напечатаем, что всех их
уничтожим.
Пакетный редактор модифицирует входной поток
sed -e 's/regexp/result/' # замена подстроки
sed -e 's/regexp/result/i' # замена подстроки не различая размер букв
sed -e 's/regexp/result/g' # множественная замена подстроки
sed -e '/target/ s/regexp/result/i' # замена подстроки в строках с "target"
sed -i 's%regexp%result%i' filename # замена подстрок в файле "на месте"
sed -n '/nachalo/,/konec/ p' # вывести строки от и до начало/конец
sed -e '/nachalo/,/konec/ d' # удалить строки от начало до конец
# выделение \(полей\) и их перестановка \2 \1...
sed -e 's%\([0-9][0-9]\)/\([0-9][0-9]\)/\([0-9][0-9][0-9][0-9]\)%\2.\1.\3%'
Популярность: 80, Last-modified: Wed, 06 Mar 2024 06:37:12 GmT