Вопрос связан с вопросом «Unix: добавить тег в начало каждого файла?».
Как добавить тег только к файлам, которые не содержат тег, например <?php , уже?
Вопрос связан с вопросом «Unix: добавить тег в начало каждого файла?».
Как добавить тег только к файлам, которые не содержат тег, например <?php , уже?
Подходяще модифицированная версия моего ответа на оригинальный вопрос:
perl -0777 -p -i -e 's/^/<?php/g unless m/^<\?php/' testfile
Выполнение этой команды с -i.bak вместо -i сохранит резервную копию исходных файлов с расширением .bak.
Изменить: Обновлен матч с m/<?php/ to m/^<\?php/ чтобы он соответствовал только началу файла, и чтобы избежать ? персонаж.
head -n1 file | grep -q "^<?php" || sed -i "1s/^/<?php /" file
Вы хотите || (ИЛИ ЖЕ). Если левая рука верна, она не будет беспокоить правую руку. например
test "$(grep PATTERN FILE)" || sed COMMAND FILE