Unix: Как проверить наличие тега в начале каждого файла перед вставкой?

366
Community

Вопрос связан с вопросом «Unix: добавить тег в начало каждого файла?».

Как разместить тег только для файлов, которые не содержат тег, например <?php, уже?

0

3 ответа на вопрос

2
nagul

Подходяще модифицированная версия моего ответа на оригинальный вопрос :

perl -0777 -p -i -e 's/^/<?php/g unless m/^<\?php/' testfile 

Выполнение этой команды -i.bakвместо вместо -iсохранит резервную копию исходных файлов с расширением .bak.

Редактировать: Обновлено соответствие с m/<?php/до, m/^<\?php/чтобы оно совпадало только с началом файла, и чтобы экранировать ?символ.

1
grawity
head -n1 file | grep -q "^ <? php" || Файл sed -i "1s / ^ / <? php /" 
0
Richard Hoskins

Вы хотите || (ИЛИ ЖЕ). Если левая рука верна, она не будет беспокоить правую руку. например

test "$(grep PATTERN FILE)" || sed COMMAND FILE 
Часть `test $ ()` здесь не нужна, и даже нарушает весь тест. `grep -q blah ||` достаточно. grawity 14 лет назад 0