Дуга Linux не имеет отдельных пакетов для -dev
и это является двоичным (в отличие от хинду). Могло бы быть несколько вещей, как tk
который не втянут по умолчанию. Вот python package
для дуги.
Sed может сделать много вещей около простого поиска-и-замены, и это включает многострочную поддержку.
Вот сообщение в блоге о том, как кто-то сделал это (он записал a sedml
сценарий для "sed мультилиния": http://austinmatzko.com/2008/04/26/sed-multi-line-search-and-replace/
Основная идея состоит в том, чтобы скопировать целый файл в sed's, "содержат буфер", выполняют regex на этом и затем выписывают измененный файл. Однако этот подход может быть довольно медленным, если Ваши файлы являются большими, поскольку Вы загружаете целый файл за один раз в память.
's@#c3284d#[^#]*#/c3284d#@@g'
без дальнейшего выхода. Единственными вещами, из которых необходимо было бы выйти в кавычках, являются sed метасимволы и s разделитель (в этом случае, таким образом, Вы в порядке). – Bristol 09.08.2012, 13:46sedml
сценарий и как я добавляю его к пути удара? Что делает[^#]*
в средней середине? Как заключительная команда похожа?grep -rl '#c3284d#' * | while read i; do sedml $i 's@#c3284d#[^#]*#/c3284d#@@g' $i.tmp; done;
? Это перезаписывает существующий файл? Действительно ли там какие-либо случаи являются заменой, не работал бы (например, когда что-то отсутствует между этими двумя шаблонами)? – testing 09.08.2012, 14:09bin
в Вашем корневом каталоге и помещенный все Ваши собственные сценарии там, затем для добавления его к пути можно добавитьexport PATH="$PATH:~/bin"
в один из Ваших файлов запуска (.bashrc
). 2.[^#]*
: Скобки обычно означают 'любой из этих символов', за исключением того, что каре вначале превращает его в 'любого кроме этих символов'. Так[^#]
соответствия любой символ это не #.*
в средствах конца "любое количество", таким образом, Вы соответствуете любой последовательности символов, которая не содержит #. исчерпывание пространства... – Bristol 09.08.2012, 18:06$i.tmp
только к$i
в конце для перезаписи оперативных файлов (при рассмотрении sedml сценария он использует$1.tmp
вносить изменения и затем перемещает файл в$2
в конце, если успешный). 4. Команда, столь же данная, будет работать, если разделители будут точно как даны и между разделителями нет никаких # символов. (Можно хотеть проверить, что это работает правильно над одним или двумя файлами вручную,sedml FILE 's@#c3284d#[^#]*#/c3284d#@@g' FILE.tmp
и посмотрите, является ли результат тем, что Вы ожидаете (эта версия не перезаписывает оригинал). – Bristol 09.08.2012, 18:11