Поставь все на конвейер! j1m (j1m@list.ru) Хакер, номер #073, стр. 073-100-2 Найдется все! Назначение утилиты grep(1) - поиск в текстовых файлах. Он выдает все строки, содержащие образец поиска. Например команда $ ls | grep .txt покажет имена файлов с расширением .txt. В качестве образца поиска можно использовать регулярное выражение. Некоторые полезные флаги: -E - использовать расширенные регулярные выражения (egrep является синонимом grep –E), -i - игнорировать регистр букв, -v - выводить строки, не соответствующие образцу, -n - выводить номера строк, -f - читать образец поиска из файла, --color - подсвечивать совпадения. Долой интерактивность! Ты видел редактор без интерфейса и вообще без интерактивного общения с пользователем? Нет? Ты многое потерял, тебе просто необходимо познакомиться с sed(1). Потоковый редактор sed предназначен для редактирования текста на лету. Он читает входной поток, выполняет необходимые преобразования в соответствии с указанными командами и записывает результат в выходной поток. Sed управляется командами, многим из которых может предшествовать адрес (номер строки или регулярное выражение, заключенное в «/») или диапазон адресов (два номера строки, разделенные запятой), последняя строка адресуется с помощью символа «$». Любая команда может быть задана без указания адреса, в этом случае она будет применена ко всем строкам. Чтобы не запутаться, команды, принимающие адреса, я буду предварять знаком «[x]», а команды, принимающие адреса или диапазоны адресов, знаком «[x,x]». Так что же можно сделать с помощью sed? 1. Его удобно использовать для замены слов в тексте с помощью команды [x,x] s/регулярное_выражение/замена/флаги. Например команда $ cat file.txt | sed 's/UNIX/Linux/g' > file2.txt заменит все слова UNIX на Linux и запишет результат в file2.txt. Флаг g нужен, если слово UNIX встречается несколько раз в одной строке. 2. Добавлять произвольную строку в поток командой [x]a\. Команда $ cat file.txt | sed '10a\Здесь был я.' вставит строку «Здесь был я.» после десятой строки. 3. Заменять произвольные строки командой [x]i\, которая работает подобно команде [x]a\. 4. Удалять строки командой [x,x]d: $ cat file.txt | sed '10,$d' $ cat file.txt | sed '/Windows/d' Первая команда удалит строки с десятой до последней, а вторая - все строки, содержащие слово «Windows». 5. Добавлять содержимое другого файла в поток командой [x]r файл. 6. Использовать вместо tr. Для этого есть команда [x]y/источник/цель/ (эквивалент: tr источник цель). 7. Использовать вместо head: $ cat file.txt | sed 10q Команда [x]q приводит к немедленному завершению работы sed. Поэтому в приведенном примере напечатается только десять первых строк, а на десятой строке произойдет выход из редактора. |